收藏
回答

两个小程序都绑定了开放平台, 为什么只有一个小程序可以获取到unionid?

故障原因: 两个小程序不是一个公司主体

解决方式:

  1. 前端通过 wx.login 获取 code, 然后通过 wx.GetUserInfo 获取 encrypted_data
  2. 前端携带 code 和 encrypted_data 请求后端登陆接口, 后端登陆接口通过 jscode2session 拿到 session_key, expires_in后, 解密 encrypted_data


其实让人懵的原因还是 同用户, 一个可以 从 jscode2session 拿到unionid, 一个从 jscode2session 就拿不到, 既然是不同主体,那为什么又可以从 encrypted_data 解密出来相同的 unionid. 完全可以直接从 jscode2session 拿到 unionid啊, 多此一举再走一步解密 encrypted_data. 如果是处于安全原因, 那 不同主体的App 却又可以直接从 jscode2session 拿到 unionid


两个小程序都绑定了开放平台

获取流程:

  1. 前端获取 code, 请求后端服务
  2. 后端通过 code 请求 jscode2session 接口获取返回数据

其中一个小程序 通过jscode2session接口, 可以获取到完整的数据, 包含 openid, unionid, session_key, expires_in

另外一个小程序 通过jscode2session接口, 却没有 unionid , 通过解密前端的 encrypted_data 是可以拿到 unionid 的.

请问是否针对新的小程序调整了 jscode2session 接口的返回参数

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

2 个回答

  • 灵芝
    灵芝
    2020-08-11

    你好,请参考unionID获取机制排查:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html

    2020-08-11
    有用
    回复 2
    • 闫军辉
      闫军辉
      2020-08-11
      机制已了解, 现在不明白的是为什么两个小程序 一个有从 jscode2session 接口可以获取到unionid另外一个却不可以
      2020-08-11
      回复
    • 灵芝
      灵芝
      2020-08-11回复闫军辉
      都满足条件吗?要同时满足的
      2020-08-11
      回复
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-08-11

    谢邀:

    2个小程序是统一主体吗

    2020-08-11
    有用
    回复 2
    • 闫军辉
      闫军辉
      2020-08-11
      不是一个主体, 绑定在同一个开放平台了.
      2020-08-11
      回复
    • 闫军辉
      闫军辉
      2020-08-11
      与这个获取不到unionid小程序相同的主体的App也是可以获取到unionid的, 都是绑定在同一个开放平台
      2020-08-11
      回复
登录 后发表内容
问题标签