- 当前 Bug 的表现:
小程序使用微信账号登录时,请求微信授权返回的信息有点奇怪,只有openid,没有unionid;
我们现在注册登录全是用unionid的,就报错了;
非常的诡异。
小程序上已经是调用接口 wx.getUserInfo来获取UnionID,但是部分用户微信登录时候,却获取不到?
如下面异常信息没有unionid:
object(stdClass)#25 (2) {
[“session_key”]=>
string(24) “9J6u+ywvbQQTggJfTlPi8g==”
[“openid”]=>
string(28) “osgEB5e2_RrNU4N4f5e8xcTREN8s”
}
- 预期表现
object(stdClass)#24 (3) {
[“session_key”]=>
string(24) “EoRkGVV54XoB5+s5Kguo0A==”
[“openid”]=>
string(28) “osgEB5SEojaE9yGB8bE83wOmBObQ”
[“unionid”]=>
string(28) “o3BP7w4kci7rYCN5qAo7SXUVQfIc”
}
因为目前官网PC端、移动APP和小程序都是绑定在同一个微信开放平台账号下的,使用微信登录,考虑小程序登录账号统一性使用unionid来登录,但是出现如上异常,导致部分用户的微信账号无法登录小程序。
以下是官方文档说明:
小程序绑定微信开放平台帐号后,可与帐号下的其他移动应用、网站应用及公众号打通,通过UnionID机制满足在多个应用和公众号之间统一用户帐号的需求。
UnionID机制说明:
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。用户的UnionID可通过调用“获取用户信息”接口获取。
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html
有劳帮忙看看,急~
wx.getUserInfo 方法指定 withCredentials 参数,然后再解密应该就有unionid了
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html
用户不符合2,3点吧,那就只能用第一种方式拿unionid
UnionID获取途径
绑定了开发者帐号的小程序,可以通过下面 3 种途径获取 UnionID。
1.调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
2.如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
3.如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login+ code2Session 获取到该用户 UnionID ,无须用户再次授权。