小程序私密消息为何无法解密出 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
})
}
})
问题排查:
- 后台解密代码逻辑正常。使用用户信息接口(wx.getUserProfile)测试可获取正常结果,因此解码逻辑正常。
- session_key 正常。使用 wx.checkSession 和上一条中获取用户信息并解密均正常工作。
- 使用接口 wx.getShareInfo(Object object) 可以解密得到结果 msgTicket: ****,但并没有 activity_id,无法获取预期结果,代码如下:
wx.getShareInfo({
shareTicket: '****', // wx.getLaunchOptionsSync() 获取,测试有效
success (res) {
// 后台解密过程
$api.post('https://url.test',{ iv: res.iv, encryptedData: res.encryptedData })
.then(result => {
console.log(result) // 获取正常结果:{msgTicket: ********}
})
}
})
已反复阅读文档,遍寻社区无果,特来请教官方指导,或有哪位朋友做过此类需求的烦请指教。