微信扫描登录

微信扫描登录

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

功能需求

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏搜云库

Linux下 标准错误输出重定向

Linux下” >/dev/null 2>&1 “相关知识说明 在学习Linux的过程中,常会看到一些终端命令或者程序中有”>/dev/null 2>&1 “出...

23310
来自专栏cloudskyme

分布式文件存储的数据库——Mongodb

什么是mongodb MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。    MongoD...

4156
来自专栏编程

tornado全面剖析与实践系列1

猿助猿的技术栈是基于Tornado的, 在学习的过程中参考了很多文章, 但是内容大都碎片化, 缺少系统性讲解, 而且不少关于异步应用的内容还是基于过时的旧版本....

3309
来自专栏xingoo, 一个梦想做发明家的程序员

【AngularJS】—— 11 指令的交互

前面基本了解了指令的相关内容:   1 如何自定义指令   2 指令的复用 本篇看一下指令之间如何交互。学习内容来自《慕课网 指令3》 背景介绍 ...

1999
来自专栏Vamei实验室

Linux文件系统的实现

Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/),节点为目录,而末端的叶子为包含数据的文...

3455
来自专栏程序员互动联盟

【高级编程】Linux read系统调用

最近一个项目做了一个模拟u盘的设备,但是在read虚拟u盘的内容时必须每次都从磁盘内读取,而不是从系统的cache中读取,由于这个问题,就查资料看了下read的...

39111
来自专栏机器学习养成记

静态爬虫与地址经纬度转换(python)

“ 本文通过一个小例子,展示了用python进行静态爬虫的方法,并且将爬取下来的城市列表,通过调用百度地图api,返回对应经纬度。” ---- requests...

6038
来自专栏SDNLAB

P4语言编程快速开始

经过前两篇的P4理论介绍,相信大家已经对P4有个基本的了解了,本片文章为大家带来P4语言编程实战。 1、系统环境安装 P4项目的官方文档上都是以Ubuntu为例...

4346
来自专栏大闲人柴毛毛

Linux文件系统——全方位掌握

文件系统的特性 磁盘分区完毕后需要进行格式化,操作系统才能使用这个分区。 不同操作系统能够使用的文件系统是不同的,例如:Windows98以前使用FAT/F...

3969
来自专栏杂烩

一种海量日志存储、分析解决方案V1.1 原

针对上一个版本https://my.oschina.net/shyloveliyi/blog/786337,有如下更新:

1103

扫码关注云+社区

领取腾讯云代金券