# 小程序私密消息

# 功能介绍

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

# 使用说明

# 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字段被篡改的可能,可以把encryptedDataiv传到开发者后台去解密。若解密后得到的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)
  }
})