前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信扫描登录

微信扫描登录

作者头像
蛋未明
发布2018-06-13 14:39:13
5.2K0
发布2018-06-13 14:39:13
举报
文章被收录于专栏:蛋未明的专栏蛋未明的专栏

微信扫描登录

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

功能需求

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都在自己的专属平台上判断共享内存的某个键值是否登录即可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年03月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 微信扫描登录
    • 功能需求
      • 实现原理
    • 多系统单公众号应用
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档