收藏
回答

小程序私密消息为何无法解密出 activity_id ?

问题接口wx.authPrivateMessage(Object object)

微信版本:安卓 8.0.16,基础库:2.21.0

问题:私密消息从后台生成 activity_id,使用接口 wx.updateShareMenu 定义私密消息,转发后另一个用户打开,能得到正常的加密信息,但无法解密获取之前生成的 activity_id。

相关代码

// 分享者
wx.updateShareMenu({
  withShareTicket: true,
  isPrivateMessage: true,
  activityId: '****', // 此处为后台获取 id,经测试有效
})


// 被分享者
// 省略 wx.login 过程
wx.authPrivateMessage({
  shareTicket: '****', //  wx.getLaunchOptionsSync() 获取,测试有效
  success (res) {
    // 后台解密过程
    $api.post('https://url.test',{ iv: res.iv, encryptedData: res.encryptedData })
    .then(result => {
      console.log(result)  // 结果解密失败 -41003
    })
  }
})

问题排查

  1. 后台解密代码逻辑正常。使用用户信息接口(wx.getUserProfile)测试可获取正常结果,因此解码逻辑正常。
  2. session_key 正常。使用 wx.checkSession 和上一条中获取用户信息并解密均正常工作。
  3. 使用接口 wx.getShareInfo(Object object) 可以解密得到结果 msgTicket: ****,但并没有 activity_id,无法获取预期结果,代码如下:
// 测试 getShareInfo
wx.getShareInfo({
  shareTicket: '****', // wx.getLaunchOptionsSync() 获取,测试有效
  success (res) {
    // 后台解密过程
    $api.post('https://url.test',{ iv: res.iv, encryptedData: res.encryptedData })
    .then(result => {
      console.log(result)  // 获取正常结果:{msgTicket: ********}
    })
  }
})


已反复阅读文档,遍寻社区无果,特来请教官方指导,或有哪位朋友做过此类需求的烦请指教。

最后一次编辑于  2021-12-01
回答关注问题邀请回答
收藏

3 个回答

  • 三毛
    三毛
    2022-05-18

    问题解决了吗?

    2022-05-18
    有用 2
    回复
  • 墨殇
    墨殇
    2022-10-03

    动态消息解密出来也只有msgTicket

    2022-10-03
    有用
    回复
  • 路红波
    路红波
    2022-02-06

    遇到同样问题,wx.authPrivateMessage 返回的数据发到后端解密失败

    难道官方就不关注这里提的问题吗?

    2022-02-06
    有用
    回复
登录 后发表内容