微信账号绑定公众号怎么实现,java代码

移动开发 码拜 9年前 (2016-04-04) 1325次浏览
麻烦认真看本人,在描述的下面,会有本人的疑问!
绑定流程的详细描述
本人在上面说了基本方法,但不够详细,导致一些新手朋友还是不清楚具体怎么样操作,所以本人在此尝试更加详细地描述整个过程的每一步:
数据库中建立用户OpenID和系统用户的绑定关系表,初始时为空。
用户和微信交互时,你可以取到用户的OpenID。
检查数据表,如发现该OpenID没有绑定系统用户,则返回一个链接供用户在微信内嵌浏览器中打开,这个链接打开后相似于系统用户登录界面。
关键是链接的生成,链接需要带3个url参数:
1. 用户OpenID:原因是你需要在绑定页面中取到是哪个微信用户想要绑定系统用户。
2. 时间戳timestamp:这是为了防止链接泄漏出去被恶意利用,具体来说就是一个你指定的过期时间,超过这个时间这个链接就失效了,用户只能再次获取。
3. 签名signature:这是为了保证此验证链接只有你才可能生成,用户及第三方均无法伪造。
签名的生成需要你有一个只有你知道的token(密钥,不要与设置在公众号里面的token相同),生成签名方法和验证微信服务器消息真实性相似。流程如下:
1. 将token、OpenID、timestamp三个参数进行字典序排序。
2. 将三个参数字符串拼接成一个字符串进行sha1加密,得到链接的signature参数。
用户打开某个绑定链接时,你首先验证链接的有效性,即按上述5.1和5.2中描述的同样的步骤得到signature与参数中的sinature对比,假如相同,则再检查链接能否超时,两步验证均通过,你就可以将用户的微信OpenID设置到用户的session中,然后你就可以渲染验证页面,让用户输入其系统用户名和密码以提交给你服务器进行验证。
在用户提交绑定验证请求后,你只需要检查session中有没有你设置的OpenID,没有自然无效,有的话就是要绑定的OpenID了,此时你可以把这个OpenID从session中删除了。然后你假如验证系统用户名和密码通过后,就把这个OpenID和系统用户绑定起来,加入到第1步中说的绑定关系表中
问题来了:
1.将带参数的url发送给用户的时候被劫持了怎么办?
2.用户打开链接是怎么样验证链接的有效性,将链接后面的参数在发送回来?
3.openid是放到java代码中的session?
解决方案

40

本人真能理解这个贴没人回的原因,描述一堆,而且分还这么少,耐下心来终于看完了
1.将带参数的url发送给用户的时候被劫持了怎么办?
这个小概率事件本人觉得你不用去考虑,按你这种思维方式,你要真这么想,人家还能截取用户发过去的报文,篡改再提交到你呢
2.用户打开链接是怎么样验证链接的有效性,将链接后面的参数在发送回来?
在用户获取链接的时候,把后面的参数存session中,用户第二次提交请求的时候去session中拿
3.openid是放到java代码中的session?
openid放哪都行,看你业务需求,哪怕你当参数传也没问题,暂时没听说谁能破解openid的生成规则
url中加timestamp
这是个问题么?你在URL中多拼个参数就好了,没看懂在问什么。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明微信账号绑定公众号怎么实现,java代码
喜欢 (0)
[1034331897@qq.com]
分享 (0)