码迷,mamicode.com
首页 > 微信 > 详细

微信扫描登录

时间:2015-03-04 09:49:09      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:微信

微信扫描登录

本文主要介绍如何实现使用微信的二维码扫描登录系统功能。

功能需求

PC系统功能,希望借用微信的oauth授权方式,来实现本系统的登录。而最简单的方式就是用户通过扫描二维码,然后在手机端进行确认,之后在PC端实现登录。

实现原理

以上的业务期望,首先我们需要转化为实际的开发需求,根据上面的期望,我们可以了解其需要两个平台支持PC端和手机微信客户端。
PC端:登录二维码扫描页面
主要负责在用户进入当前页面后,根据当前用户的cookie和时间字符串阶段性的生成一个唯一键值,并产生一个唯一的手机访问的url。例如:当前有唯一cookie字符串(adccccc),时间戳为(1425351101),那么根据一定的加密规则后,生成一个唯一键值(df3a4de2af34)。根据这个唯一键值,生成唯一的手机访问url为:
http://www.test.com/oauth?key=df3a4de2af34
手机微信客户端:OAUTH授权登录页面
主要工作就是在手机端使用微信的oauth登录,登录成功后根据当前的唯一键值,以及登录的session信息和用户信息保存到公共内存资源中。PC端通过socket或者轮询方式查询该键值是否已经登录成功,如果成功登录则在PC端保存用户登录session,并提示PC前端。
以上过程可以简化为下图模式。
技术分享
1. 用户打开PC页面,就可以看到一个二维码,类似如下图。二维码其实包含的仅仅是一个手机端oauth授权的url;
技术分享
2. 用户通过微信扫描二维码,打开oauth授权页面;
3. 用户成功授权后,服务端获取用户登录信息,以及其所携带的唯一键值;
4. 通过socket或者轮询方式通知PC端,当前已经成功登录,并赋予当前PC端session信息。

多系统单公众号应用

在应用的过程中会发现一个公众号可能需要支持多个平台,但是微信授权只支持一个绝对域名,因此如果希望一个帐号多个平台共享是无法实现的。
解决办法就是通过统一的一个平台去做手机端授权管理,然后针对键值的生成规则,将其保存到不同的共享内存中。
例如:有A、B和C三个平台,然后E平台是作为手机端统一授权服务器。A、B和C平台通过特殊标识生成一个唯一的键值,然后在E平台登录成功后,E根据解析出来的键值将登录信息写入不同的平台的共享内存。而A、B和C都在自己的专属平台上判断共享内存的某个键值是否登录即可。

微信扫描登录

标签:微信

原文地址:http://blog.csdn.net/dan_blog/article/details/44055735

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!