发表日期:2019-08 文章编辑:小灯 浏览次数:869
首先感谢大牛给出的实践,本篇文章是转过来的,我看到的和我理解的确实是一样的。
完全copy过来的:
接触过的人应该都知道,同一个微信开放平台下的相同主体的App、公众号、小程序的unionid是相同的,这样就可以锁定是不是同一个用户。微信针对不同的用户在不同的应用下都有唯一的一个openId, 但是要想确定用户是不是同一个用户,就需要靠unionid来区分。一般自己的后台都会有自己的一个用户表,每个用户有不同的userid。也就是说同一个用户在同一个微信开放平台下的相同主体的应用对应着相同的userid,unionid以及不同的openid。所以在用户登录进来的时候,我们只能靠微信返回给我们的unionid去判断是不是同一个用户,在去关联我们的用户表,拿到对应的userid。
接下来就是在获取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等信息。这里就需要注意了。官方文档上说的是
如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。
,这里分为两种情况,
(1)用code换取的时候,返回了unionid,这样就皆大欢喜了,你可以根据unionid以及openid去判断该用户有没有用户信息,从而获取userid或者生产userid返回给前端
(2)悲剧的情况,unionid返回为null,这时候你没法儿关联出用户的userid。后来再去看官方文档的时候,发现有针对这种情况的方法。就是需要前端再去调wx.getUserInfo()【这儿接口目前不让直接用了,具体原因看我上篇写的点击打开链接】这个接口。这时候微信会返回很多数据(详情见微信官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html),这些数据里面有一个encryptedData,这个数据中就包含你需要的unionid以及其他的很多用户信息啦。获取到以后将encryptedData、加密算法的初始向量iv返回给后端,后端根据这两个数据以及之前的session_key就可以解密出你需要的数据了。
微信公众平台。登录流程:https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject
encryptedData 的解密流程:https://developers.weixin.qq.com/miniprogram/dev/api/signature.html#wxchecksessionobject
日期:2019-11 浏览次数:4785
日期:2019-11 浏览次数:11206
日期:2019-11 浏览次数:3647
日期:2019-11 浏览次数:4558
日期:2019-11 浏览次数:4658
日期:2019-11 浏览次数:6324
日期:2019-11 浏览次数:4578
日期:2019-11 浏览次数:15027
日期:2019-11 浏览次数:3926
日期:2019-11 浏览次数:5695
日期:2019-11 浏览次数:4531
日期:2019-11 浏览次数:3864
日期:2019-11 浏览次数:9623
日期:2019-11 浏览次数:7536
日期:2019-11 浏览次数:4227
日期:2019-11 浏览次数:3620
日期:2019-11 浏览次数:8161
日期:2019-11 浏览次数:3874
日期:2019-11 浏览次数:4046
日期:2019-11 浏览次数:4119
日期:2019-11 浏览次数:3677
日期:2019-11 浏览次数:4265
日期:2019-11 浏览次数:9450
日期:2019-11 浏览次数:4464
日期:2019-11 浏览次数:4458
日期:2019-11 浏览次数:4043
日期:2019-11 浏览次数:11361
日期:2019-11 浏览次数:6657
日期:2019-11 浏览次数:6917
日期:2019-11 浏览次数:4270
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.