第三方用户实现和微信绑定过程


微信与第三方用户绑定主要是怎么获取OpenID, 公众号中的OpenID是唯一的,所以首先要关注公众号,才能获取OpenID,
并且第三方的数据库中用户表中必须有OpenID字段数据。

一:已注册第三方用户,且已登录,在网页上绑定“微信帐号”

1:后台通过使用微信接口,生成一个临时二维码(其中二维码的地址包括scene_id,生成scene_id时,并绑定用户ID),并在前端显示;
2:用户扫描二维码,如果没有关注微信公众号,则点击关注微信公众号;
3:服务端处理关注后的事件推送,通过EventKey获取scene_id和Openid;

用户未关注时
<EventKey><![CDATA[qrscene_123123]]></EventKey> //qrscene_为前缀,后面为二维码的参数值

用户已关注时
<EventKey><![CDATA[SCENE_VALUE]]></EventKey>//一个32位无符号整数,即创建二维码时的二维码scene_id

4:根据scene_id来获取绑定的用户ID,并建立用户ID与微信用户openid的对应关系;
5:给用户的微信客户端推送成功绑定提示;

二:已注册第三方用户,但是未登录

1:后台通过使用微信接口,生成一个临时二维码(其中二维码的地址包括scene_id,生成scene_id时,并绑定用户ID),并在前端显示;
2:扫描网站上的二维码, 用户和微信交互时 ,你可以取到用户的OpenID。
检查数据表,如发现该OpenID没有绑定系统用户,则返回一个链接供用户在微信内嵌浏览器中打开,这个链接打开后类似于系统用户登录界面。
关键是链接的生成,链接需要带3个url参数:
1. 用户OpenID:因为你需要在绑定页面中取到是哪个微信用户想要绑定系统用户。
2. 时间戳timestamp:这是为了防止链接泄漏出去被恶意利用,具体来说就是一个你指定的过期时间,超过这个时间这个链接就失效了,用户只能再次获取。
3. 签名signature:这是为了保证此验证链接只有你才可能生成,用户及第三方均无法伪造。
签名的生成需要你有一个只有你知道的token(密钥,不要与设置在公众号里面的token相同),生成签名方法和验证微信服务器消息真实性类似。流程如下:
1. 将token、OpenID、timestamp三个参数进行字典序排序。
2. 将三个参数字符串拼接成一个字符串进行sha1加密,得到链接的signature参数。
用户打开某个绑定链接时,你首先验证链接的有效性,获取signature与参数中的sinature对比,如果相同,则再检查链接是否超时,两步验证均通过,你就可以将用户的微信OpenID和系统用户绑定


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM