通过wx.login,后端通过code可以获取unionid。
关注过公众号的可以获取unionid,没关注公众号但在小程序里授权登录过的老用户获取不到unionid。
官网文档:
unionID获取途径
3.如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。
问题:为什么授权登录过的老用户获取不到unionid?怎么解决?(不想通过getUserInfo授权解密,有没有其他的办法)
目前我这边是绑定在已认证的公众号下的小程序。通过获取用户信息的组件button来拿用户的敏感信息。在此之前后台已经通过code拿到了session_key和openid,但解密后的信息里面并没有包含unionid。通过UnionID机制第一条来讲,通过wx.getUserInfo 的接口用户授权后从加密信息里获取,但现在这个接口被组件的主动触发代替,主动触发授权后为什么反而拿不到unionid了?
这个不应该的,我们之前就是用这种方式,wx.getUserInfo的方式没问题的,可以取到unionid和昵称头像等信息的。
如果你是通过wx.login返回的code来解密得到unionid,那就需要满足关注过同主体的公众号或者微信授权登录过同主体的APP,这样才能得到unionid,否则你只是认证过公众号小的小程序是没用的,就算geuserinfo授权过也没用,wx.login还是只能拿到openid,获取不到unionid。
解决的方式就是这种通过wx.login获取不到unionid的,弹出getUserInfo授权,从getUserInfo的加密数据里面解密,这个肯定能得到unionid,我们公司做新用户和部分老用户的兼容,就是用的这个解决思路。
但是现在那个授权框不会再自己弹出来了呀,必须用户自己点击button才会弹出来,可是就算是用户主动授权,我们后端解密出来的信息里仍没有unionid,感觉很奇怪。
小程序一直都是绑定的,我们现在刻意想绕开getUserInfo来获取unionid,但是授权过的老用户通过wx.loginb获取不到unionid,如果关注过公众号的则可以。
是否官方文档“unionID获取途径”的第3条中的描述并不包含小程序,该用户已经授权登录过该公众号或移动应用,但并没有说该用户已经授权登录过小程序,是否应该这样理解?
有官方的人看到希望能给与支持和答复,谢谢!
这个你要去微信开发平台绑定就有了,要认真看文档
微信开发平台已经绑定过了
绑定就能获取得到了
兄弟你再试试吧,公司这边我们已经验过了,我们公众号、app、小程序是同主体下绑定认证过的。
同主体的公众号、app如果关注和授权过是可以在小程序wx.login后返回的,但是如果并非上面的条件,只是在小程序里授权登录过,再次进入小程序wx.login后,返回是没有unionid的。
可以说官方文档“unionID获取途径”的第3条说的没问题,“已经授权登录过该公众号或移动应用”,并不包含小程序,所以即便授权过小程序也不满足unionID获取的条件,因为在微信管理平台上,移动应用和小程序是两个页签分类,我们最开始还以为app、小程序都属于移动应用呢。
unionID是公众号和app、小程序这些唯一相同的id,这个是用来判断登录的问题,如果你在公众号登录成功了,再次进入小程序获取得到unionid用来检验是否登录过了,要不就是你们后端那边有没有解密那个,如果你前端还是满足要求都不能获取得到unionid的话,你跟后端那边要一起检验一下的