调用 “wx.login()” 获取code,然后调用 “jscode2session” 接口就可以换取到 “openid” 和 “unionid”,而且调用 “wx.login” 不需要获得用户授权。
同样调用 “wx.getUserInfo” 通过加解密也可以获取 “openid” 和 “unionid”,但是 “wx.getUserInfo” 需要用户授权。
—
那么这2个方法获取到的 “openid” 和 “unionid” 有什么区别呢?
你上面的是wx.login获取unionid的方式!是需要满足一定的条件的!但是wx.getUserInfo接口;会返回一个encryptedData字段!你们后台可以解析出用户的一些敏感数据里面有unionid;只需要用户授权就可以!没有别的前提条件!利用unionid去注册;而且app如果也调用微信登录的话也可以获取到unionid,而且两个unionid是一样的!就可以实现共享了!
文档上不是说有返回么
//正常返回的JSON数据包 { "openid": "OPENID", "session_key": "SESSIONKEY", "unionid": "UNIONID" } //错误时返回JSON数据包(示例为Code无效) { "errcode": 40029, "errmsg": "invalid code" } |
wx.login()获取能获取到unionid的前提是用户必须关注过小程序绑定的公众号还是别的条件才能获取到!而wx.getUserInfo需要用户授权,没有别的前提条件!如果要app和小程序的账号共享的话用wx.getUserInfo
可是 https://mp.weixin.qq.com/debug/wxadoc/dev/api/uinionID.html 上的UnionID机制说到“
同一个微信开放平台下的相同主体的App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。
”
所以无论是用 “wx.login” 或者是 “wx.getUserInfo” ,要获取到的 unionid 条件是一样的吧。。。