微信小程序无法获取到unionId(专业踩坑20年)
UnionID机制说明
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
我们系统都做了移动应用、网站应用、和公众帐号的微信登入,我们后端这边是有微信绑定账号功能的。所以需要在微信的给出的用户唯一的unionID判断该用户是否已绑定微信号。
微信小程序API详情的官方链接: https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject
微信官方的流程图:
前端调用wx.login获取code,然后将code返回给后台拿着code与appid,secret访问微信接口获取session_key、openid和 unionId
看一下拿code请求成功后,微信官方给出的返回结果:
我当时返回的结果就是不满足UnionID情况下的、此处我黑人问号三连???
再看看微信官方给出的解释、怎么才能满足UnionID的情况呢?
所以我就让前端同事改逻辑,前端需要调用完wx.login函数后获得code、紧接着前端再调用wx.authorize函数让用户授权同意再将刚刚调用完wx.login获取到的code请求后端接口(前端的这里调用函数貌似是有顺序的 wx.login ----> wx.authorize)
然后............................
还是只返回了session_key、openid 还是没有UnionID !!!!!麻蛋!
划重点、检查微信开放平台的管理中心的小程序是否添加绑定:
开发资质未认证的话,需要申请开发者资质认证(需要交资料and费用)
认证通过后、去管理中心、小程序、绑定小程序(小程序登入账号就是微信公众号的账号and密码)
绑定好后、再次访问小程序接口、就可以获取到UnionID了
------------------------------------------------------------------------性感分割线-------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------