故障原因: 两个小程序不是一个公司主体
解决方式:
- 前端通过 wx.login 获取 code, 然后通过 wx.GetUserInfo 获取 encrypted_data
- 前端携带 code 和 encrypted_data 请求后端登陆接口, 后端登陆接口通过 jscode2session 拿到 session_key, expires_in后, 解密 encrypted_data
其实让人懵的原因还是 同用户, 一个可以 从 jscode2session 拿到unionid, 一个从 jscode2session 就拿不到, 既然是不同主体,那为什么又可以从 encrypted_data 解密出来相同的 unionid. 完全可以直接从 jscode2session 拿到 unionid啊, 多此一举再走一步解密 encrypted_data. 如果是处于安全原因, 那 不同主体的App 却又可以直接从 jscode2session 拿到 unionid
两个小程序都绑定了开放平台
获取流程:
- 前端获取 code, 请求后端服务
- 后端通过 code 请求 jscode2session 接口获取返回数据
其中一个小程序 通过jscode2session接口, 可以获取到完整的数据, 包含 openid, unionid, session_key, expires_in
另外一个小程序 通过jscode2session接口, 却没有 unionid , 通过解密前端的 encrypted_data 是可以拿到 unionid 的.
请问是否针对新的小程序调整了 jscode2session 接口的返回参数
你好,请参考unionID获取机制排查:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html
谢邀:
2个小程序是统一主体吗