赞
踩
同一个微信开放平台下的相同主体的App、公众号、小程序的unionid是相同的,这样就可以锁定是不是同一个用户。微信针对不同的用户在不同的应用下都有唯一的一个openId, 但是要想确定用户是不是同一个用户,就需要靠unionid来区分。如果用户没有关注过或者使用过同一个微信开放平台下的主体那么用户首次使用的时候unionid必为空!(除过强制授权的主体)
要想获取unionid就必须绑定微信开放平台
首先,前端调用wx.login的时候会返回一个code,这个code传到后台的时候。
后台调用微信的接口(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code)传入 code,appid,secret去换取到openid,session_key以及unionid等信息。
(1)用code授权换取的时候,返回了unionid,这样就皆大欢喜了
(2)当unionid返回为null,这时候你再去看官方文档的时候,发现有针对这种情况的方法。就是需要前端再去调wx.getUserInfo()这个接口。这时候微信会返回很多数据(详情见微信官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html),这些数据里面有一个encryptedData,这个数据中就包含你需要的unionid以及其他的很多用户信息啦。获取到以后将encryptedData、加密算法的初始向量iv返回给后端,后端根据这两个数据以及之前的session_key就可以解密出你需要的数据了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。