微信扫描登录

微信扫描登录

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

功能需求

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 条评论
登录 后参与评论

相关文章

来自专栏电光石火

如何让nginx显示文件夹目录

1. 如何让nginx显示文件夹目录 vi /etc/nginx/conf.d/default.conf 添加如下内容: location / ...

17010
来自专栏IT派

Vue + Node + Mongodb 开发一个完整博客流程

前言 前段时间刚把自己的个人网站写完, 于是这段时间因为事情不是太多,便整理了一下,写了个简易版的博客系统。 服务端用的是 koa2框架 进行开发。 技术栈 ...

4095
来自专栏marsggbo

coursera 视频总是缓冲或者无法观看的解决办法

注意!!!该方法针对Windows用户,亲测有效。 1.用管理员权限记事本打开host文件 2.将如下内容复制到文件末尾 52.84.246.90 ...

1965
来自专栏企鹅号快讯

Linux系统下常用的数据备份方法

Linux作为网络操作系统,在服务器方面的应用越来越广泛。作为专门的网络服务器,一个重要功能就是对服务器数据进行备份,以确保数据的安全。本文将介绍在Linux系...

1908
来自专栏草根专栏

Angular CLI 简介

如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文.

1.2K10
来自专栏梧雨北辰的开发录

Git命令语法汇总

本文是在学习廖雪峰Git教程后对常用Git命令的使用总结,仅供在使用Git时方便查找。 ? 一、Git简介 Git是当前最为流行的分布式版本控制系统,尤其是...

2927
来自专栏游戏杂谈

PHP 图片验证码的问题

发现没有问题,查看php.ini中的扩展,发现extension=php_gd2.dll 已经开启了

302
来自专栏电光石火

如何让nginx显示文件夹目录

vi /etc/nginx/conf.d/default.conf

19410
来自专栏扎心了老铁

使用Fabric一键批量部署上线/线上环境监控

本文讲述如何使用fabric进行批量部署上线的功能 这个功能对于小应用,可以避免开发部署上线的平台,或者使用linux expect开发不优雅的代码。 前提条件...

3596
来自专栏web开发

Gulp实现css、js、图片的压缩以及css、js文件的MD5命名

目前做代码压缩合并的工具有很多,诸如gulp,webpack,grunt等等,可以说这些项目构建工具的功能非常之强大:图片压缩、图片转base64、css和js...

2648

扫码关注云+社区