第三方网站实现绑定微信登陆
2015-06-15 10:43
716 查看
最近在公司负责一个ROR项目,基于Rabel的论坛产品,老板想把这个产品植入微信,让我做微信绑定登陆。微信开发文档还是很不错的,折腾了几天,把这个功能拿下了。
微信获取用户资料文档:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
如何获取用户资料我就不赘述了,文档上说明很清楚,我主要说说实现微信绑定与登陆的思路。
要点包括但不限于:
保存用户的数据表Person中,添加字段weixin_openid,用于保存微信与公众号唯一的用户标识
在服务端实现URL跳转时保留查询字符串的功能,具体例子如
未登录用户访问/home?code=123456,此时应跳转到/login?code=123456,而非/login
登陆页面有三种形式
最原始的用户密码登陆。此形式将不包含查询字符串
此时输入用户密码登陆
已绑定微信的用户快捷登陆方式。此形式会包含查询字符串?code=123456
此时服务器端利用code获取openid,若成功找到绑定的用户,直接登陆
一个用户想要进行微信绑定,点击绑定入口后,由于未登录而跳转到的登陆页面。此形式会包含查询字符串?code=123456&state=bind
服务端检测到state=bind,得知是绑定操作,暂时不去获取openid,待用户登陆跳转后,再去获取openid进行绑定。(这就是第二点保留字符串跳转的作用)
鲁棒性,包括
查询字符串错误或缺失的处理
微信绑定的逻辑性处理,例如一个微信只能绑定一个账号,一个账号只能绑定一个微信,不能重复绑定
附一个当时做的微信绑定的流程图
微信获取用户资料文档:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
如何获取用户资料我就不赘述了,文档上说明很清楚,我主要说说实现微信绑定与登陆的思路。
要点包括但不限于:
保存用户的数据表Person中,添加字段weixin_openid,用于保存微信与公众号唯一的用户标识
在服务端实现URL跳转时保留查询字符串的功能,具体例子如
未登录用户访问/home?code=123456,此时应跳转到/login?code=123456,而非/login
登陆页面有三种形式
最原始的用户密码登陆。此形式将不包含查询字符串
此时输入用户密码登陆
已绑定微信的用户快捷登陆方式。此形式会包含查询字符串?code=123456
此时服务器端利用code获取openid,若成功找到绑定的用户,直接登陆
一个用户想要进行微信绑定,点击绑定入口后,由于未登录而跳转到的登陆页面。此形式会包含查询字符串?code=123456&state=bind
服务端检测到state=bind,得知是绑定操作,暂时不去获取openid,待用户登陆跳转后,再去获取openid进行绑定。(这就是第二点保留字符串跳转的作用)
鲁棒性,包括
查询字符串错误或缺失的处理
微信绑定的逻辑性处理,例如一个微信只能绑定一个账号,一个账号只能绑定一个微信,不能重复绑定
附一个当时做的微信绑定的流程图
![](https://images0.cnblogs.com/blog2015/722206/201506/151018237324532.png)
相关文章推荐
- Nodejs RESTFul架构实践之api篇
- 搭建网站IIS目录权限设置说明
- 在IIS网站搭建过程中经常出现一些问题,对这些问题进行总结,供以后参考
- 架构设计中影响性能的因素及解决方案
- 【OGG】 RAC环境下管理OGG的高可用 (五)
- 【OGG】 RAC环境下管理OGG的高可用 (五)
- iOS应用架构谈 view层的组织和调用方案
- iOS应用架构谈 开篇
- 【OGG】 RAC环境下管理OGG的高可用 (五)
- 重识外观模式
- .NET逻辑分层架构总结
- 分布式系统的特点以及设计理念
- 架构师速成1-前言
- 架构师速成1-前言 分类: 架构师速成 2015-06-15 08:21 249人阅读 评论(0) 收藏
- volley源码解析(一)--volley的使用和架构
- 网站优化包含从创新式写作到编码的各种规程和活动
- 有效地进行网站优化推广所需要的最少时间
- 记录谁向您的网站添加了新的链接?
- .NET逻辑分层架构总结
- 记录谁向您的网站添加了新的链接?