小程序私密消息

功能介绍

小程序私密消息功能是这样一种能力:当分享者分享小程序卡片给其他用户或者微信群后,其他用户点击此小程序卡片时,开发者可以鉴别出点击卡片的用户是否被分享者分享过小程序卡片。

使用说明

1. 分享

创建业务活动后、分享小程序消息前,需要通过后台接口 createActivityId 创建activityId,建议一个activityId与一个业务活动id唯一关联。

然后通过 wx.updateShareMenu 接口声明本次分享的消息为私密消息,私密消息具有不可二次转发性。

声明完成后,可以通过右上角菜单、分享按钮组件、wx.shareAppMessage(仅小游戏)分享私密消息给个人、群聊。

场景一: 个人分享给个人

A —> B

场景二: 个人分享给群

A —> [B, C, D, E]

示例代码

  1. wx.updateShareMenu({
  2. withShareTicket: true,
  3. isPrivateMessage: true,
  4. activityId: 'xxx',
  5. })

2. 验证

从群聊、单聊消息卡片进入小程序时,通过 wx.authPrivateMessage 接口可以验证当前用户是否是私密消息的接收者,即验证这条消息是否是A直接转发给B或者A转发给B所在的群

接口参数

参数类型说明
shareTicketstringshareTicket

success回调

参数类型说明
validBoolean验证是否通过
ivString加密算法的初始向量,详细见加密数据解密算法
encryptedDataString经过加密的activityId,解密后可得到原始的activityId。若解密后得到的activityId可以与开发者后台的活动id对应上则验证通过,否则表明valid字段不可靠(被篡改) 详细见加密数据解密算法

注意事项

  • 若返回的valid字段为false,表示此次验证不通过。
  • 若返回的valid字段为true,表示验证通过。但是为了安全起见,预防valid字段被篡改的可能,可以把encryptedDataiv传到开发者后台去解密。若解密后得到的activityId就是当前活动所对应的activityId 则验证通过,否则表示验证不通过。
  • 当私密消息分享给群时,是按鉴别时刻用户是否在群里作为判断。
  • activityId创建后7天内分享有效,120天内验证有效。

示例代码

  1. wx.authPrivateMessage({
  2. shareTicket: 'xxxxxx',
  3. success(res) {
  4. console.log('authPrivateMessage success', res)
  5. // res
  6. // {
  7. // errMsg: 'authPrivateMessage:ok'
  8. // valid: true
  9. // iv: 'xxxx',
  10. // encryptedData: 'xxxxxx'
  11. // }
  12. },
  13. fail(res) {
  14. console.log('authPrivateMessage fail', res)
  15. }
  16. })