# 小程序私密消息
# 功能介绍
小程序私密消息功能是这样一种能力:当分享者分享小程序卡片给其他用户或者微信群后,其他用户点击此小程序卡片时,开发者可以鉴别出点击卡片的用户是否被分享者分享过小程序卡片。
# 使用说明
# 1. 分享
创建业务活动后、分享小程序消息前,需要通过后台接口 createActivityId 创建activityId
,建立一个activityId
与一个业务活动id唯一关联。
然后通过 wx.updateShareMenu 接口声明本次分享的消息为私密消息,私密消息具有不可二次转发性。
声明完成后,可以通过右上角菜单、分享按钮组件、wx.shareAppMessage(仅小游戏)分享私密消息给个人、群聊。
# 场景一: 个人分享给个人
A --> B
# 场景二: 个人分享给群
A --> [B, C, D, E]
示例代码
wx.updateShareMenu({
withShareTicket: true,
isPrivateMessage: true,
activityId: 'xxx',
})
# 2. 验证
从群聊、单聊消息卡片进入小程序时,通过 wx.authPrivateMessage 接口可以验证当前用户是否是私密消息的接收者,即验证这条消息是否是A直接转发给B或者A转发给B所在的群。
该接口使用前,需要通过 wx.login() 接口登录小程序。
# 接口参数
参数 | 类型 | 说明 |
---|---|---|
shareTicket | string | shareTicket |
# success回调
参数 | 类型 | 说明 |
---|---|---|
valid | Boolean | 验证是否通过 |
iv | String | 加密算法的初始向量,详细见加密数据解密算法 |
encryptedData | String | 经过加密的activityId,解密后可得到原始的activityId。若解密后得到的activityId可以与开发者后台的活动id对应上则验证通过,否则表明valid字段不可靠(被篡改) 详细见加密数据解密算法 |
# 注意事项
- 若返回的
valid
字段为false
,表示此次验证不通过。 - 若返回的
valid
字段为true
,表示验证通过。但是为了安全起见,预防valid
字段被篡改的可能,可以把encryptedData
和iv
传到开发者后台去解密。若解密后得到的activityId
就是当前活动所对应的activityId
则验证通过,否则表示验证不通过。 - 当私密消息分享给群时,是按鉴别时刻用户是否在群里作为判断。
activityId
创建后7天内分享有效,120天内验证有效。
# 示例代码
wx.authPrivateMessage({
shareTicket: 'xxxxxx',
success(res) {
console.log('authPrivateMessage success', res)
// res
// {
// errMsg: 'authPrivateMessage:ok'
// valid: true
// iv: 'xxxx',
// encryptedData: 'xxxxxx'
// }
},
fail(res) {
console.log('authPrivateMessage fail', res)
}
})