我想反馈一个BUG:
首先我的需求是小程序获取unionid,按照文档的步骤通过wx.login获取code再用code调
“
https://api.weixin.qq.com/sns/jscode2session?
appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
”
获取unionid,但是返回的只有openid
微信开放平台已经绑定过了,大概2月2号也测试过,能取到unionid,之后代码一直没动,2月6号再测就取不到了,求大神帮忙看看
还有如果用户直接从关联的公众号进入小程序,前端的wx.login也可以获取到unionid。
----------
同一个微信开放平台下的相同主体的App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。
请注意已经和曾经两个词、这就是为什么公众号进入能获取的到,因为公众号进入用户基本是关注了你的公众号的,所以获取的到。
那么请问你仔细阅读文档了么
请问你获取不到 unionid 的用户又关注你的公众号或者同主体下的其他帐号么
飞鸟和蝉:是正解
经过测试
微信用户通过公众号进入小程序,再登录,那么后端是可以通过服务端的接口(https://api.weixin.qq.com/cgi-bin/token)获取到该微信用户的 unionid 的。
微信用户直接进入小程序,进行登录,那么后端是通过服务端的接口(https://api.weixin.qq.com/cgi-bin/token)获取到该微信用户的 unionid 的值就是空的。
补充:前端通过 wx.getUserInfo 获取到数据中,再将 encryptedData 解密出来后,里面的 unionId 是一定会有的
你需要解密,把session_key,vi拿来解密出uinonid
我也遇到这个问题
绑上开放平台取不到 unionid
是不是 开放平台响应需要时间?
@sh 兄弟,这个问题我遇到过。
第一:您获取到过unionid,应该是您这个账号是从统一开放平台下(比如公众号)下进到小程序,这时候调用jscode2session接口肯定会有返回unionid
第二:过了2天获取不到了,可能是这个用户没有从统一开放平台下公众号进入到小程序,而是直接搜索您线上的小程序进入的小程序,这时候获取unionid就只能根据前端wx.getUserInfo返回给你的iv,encryptedData来解密获取到用户的unionid。具体搜索 ‘小程序解密用户基本信息’。
ps:别问我为啥知道,因为我加了一晚上班,才搞清楚这个东西,出问题的用户确实是直接搜索小程序进的!
还有如果用户直接从关联的公众号进入小程序,前端的wx.login也可以获取到unionid。
光获取openid 这个坑就卡了我两天,官方文档也有时候让人误会以为能直接取到,作为小白,最后才弄清楚拿到code丢给后台,后台处理再返回给我openid,官方文档可没说的这么清楚。
mark
我知道用wx.login获取不到unionid是正常的 因为我没有关注过公众号我调的是这个接口
获取unionid的条件我已经满足了,上面也截图过了,但就是获取不到