Websocket 实现扫码二维码登录

最近在做一个扫码登录功能,为此我还在网上搜了一下关于微信的扫描登录的实现方式。当这个功能完成之后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序员们。

1. 在没有输入用户名及密码的情况下,如何解决权限安全问题?换句话讲,如何让服务器知道扫码二维码的客户端是一个合法的用户?

2. 服务器根据用户在客户端的选择如何实时在网页上作出相应的响应?

首先我们先理一下微信的实现思路,来方便我们理解解决这一难题的思路方向。微信登录的二维码实际上是将一个URL转换成二维码的形式,而通过微信客户端扫码后,无非就是打开了这个url, 我捕捉到的微信二维码的urlhttps://login.weixin.qq.com/l/YdmTu30I5A== ,这个url里的YdmTu30I5A==代表的是本次会话的唯一ID, 这个有点儿类似浏览器里的session id,通过这个ID,微信就能定向将确认结果反馈到网页上。使用微信二维码登录功能,需要有两个前提:一是客户端上需要安装微信app 二是用户需要登录到到微信apphttps://wx.qq.com/

 

 Websocket Web实时消息后台服务器推送技术

 

为什么要有这两个条件呢?那是因为微信在确认是否允许登录到网页版的时候,微信需要提取当前app的登录信息并将上面的session ID一并发给服务器,这样服务器收到了登录信息和sessionID后就可以确认两件事:一是用来确认登录的客户端的用户是验证过的;二是通过session ID服务器知道将反馈结果推送到哪个网页。

   所以针对第一点,我们的关键在于,在扫描前要确保用户是已经被验证过且合法的用户(验证方式可以是用户名+密码,也可以是一个secure key),在选择是否登录时将这个结果一并推送到服务器端,就好了。如果用户没有验证是否合法,可以像微信的处理方式一样直接告诉用户二维码不可识别或提示请先登录到app

  有了身份验证,那么现在就解决第二个问题,如何将反馈结果实时地显示在网页上呢?有朋友可能会说,客户端这边很简单发一个请求到后台就好了,而网页上用ajax定时发送到服务器端看是否有反馈。我不赞成这种做法,因为ajax轮询方式十分消耗客户端和服务器端资源!这里涉及到另一个技术-web实时推送技术,使用推送技术可以节约服务器端和客户端的资源,可以稳定地推送和接收任何消息。我在实现的过程中我采用了第三方推送服务-GoEasy推送,用它是实现非常简单,我们项目里的其他功能也用到了GoEasy web实时推送服务,所以在此我直接就用的GoEasy推送来将登录反馈结果推送到服务器。我的实现步骤非常简单,将传送的session ID作为客户端与网页端的通信channel,网页端订阅用session ID作为值得channel,客户端将验证结果和session ID发送到服务器端,服务器端可以通过这个channel主动将结果推送给网页版!如果客户端也需要做相应的反馈的话,那么客户端也只需要订阅这个channel,然后服务器端会同时将结果推送给网页版和客户端,收到消息后,就可以根据需求在goeasy的回调函数里做你想做的事情了。关于goeasy推送的使用,大家可以参考这篇博客: http://www.cnblogs.com/jishaochengduo/articles/5552645.html 另外GoEasy推送官网上也有一个demoGoEasy二维码扫码登录demo,大家可以去看看效果.

  希望对大家有帮助,如有理解错误的地方,还请大家斧正。

转载于:https://my.oschina.net/miaomiaogong/blog/777254

C# 微信授权登录 1.创建网站应用 1.1去微信开放平台申请网站应用。 1.2申请 审核通过后可获得 AppID和AppSecret. 1.3并且申请微信登录接口。 2.生成二维码和获取code 官方文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html 2.1 官方文档写的很明细。 例子:https://open.weixin.qq.com/connect/qrconnect?appid=wx 阅读详情

相关推荐

客户端登录功能的实现思路

最近在做一个登录功能,为此我还在网上搜了一下关于微信的登录实现方式。当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些。

xiqincai8的博客 3638

swoole实现微信登录

吐槽一下:最近看swoole也有一段时间了,怎么说呢,感觉网上关于swoole相关资料很零散,系统讲解的并不多,很多还要收费,直接开始看文档,完全没方向,也真心看不懂。

qq_25096741的博客 256

智能座舱测试工程师必看:从零搭建自动化测试框架的5个实战技巧

本文为智能座舱测试工程师提供从零搭建自动化测试框架的5个实战技巧,涵盖环境搭建、ADB高级应用、Python脚本工程化、Monkey测试优化及性能调优。通过ADB深度操作和Python脚本封装,帮助测试人员构建高可复用的智能座舱测试解决方案,显著提升测试效率与问题发现率。

python9snake的博客 585

C#实现微信登录

最近公司打算引进触屏终端,需要将已有小程序打包为APP,并且实现微信登录终端。。然而,因为APP是直接用uniapp打包的,没有找到使用微信SDK的方法;时间紧,也懒得去研究uniapp那一套(有知道咋处理的小伙伴可以告知一下),然后就想了另外一套方案。使用微信的,打算使用做个中间页获取到授权信息;好吧,那只能再换一个方案了。

Leslie_Dz的博客 2868

PHP websocket实现二维码登录

最近在做一个登录功能,为此我还在网上搜了一下关于微信的登录实现方式。当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些。 要实现登录我们需要解决两个问题: 1.  在没有输入用户名及密的情况下,如何解决权限安全问题?换句话讲,如何让服务器知道二维码的客户端是一个合法的用户? 2.  服务器根据用户在客户端的选择如何实时在网页...

sanrenxing_1的博客 388

Python Websocket实现二维码登录---GoEasy

最近在做一个登录功能,为此我还在网上搜了一下关于微信的登录实现方式。当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些。 要实现登录我们需要解决两个问题: 1.  在没有输入用户名及密的情况下,如何解决权限安全问题?换句话讲,如何让服务器知道二维码的客户端是一个合法的用户? 2.  服务器根据用户在客户端的选择如何实时在网页...

xiqincai6的博客 669

JAVA Websocket实现二维码登录---GoEasy

最近在做一个登录功能,为此我还在网上搜了一下关于微信的登录实现方式。当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些。 要实现登录我们需要解决两个问题: 1.  在没有输入用户名及密的情况下,如何解决权限安全问题?换句话讲,如何让服务器知道二维码的客户端是一个合法的用户? 2.  服务器根据用户在客户端的选择如何实时在网页...

xiaoxiaoxiqincai2的博客 425

Ruby Websocket实现二维码登录---GoEasy

最近在做一个登录功能,为此我还在网上搜了一下关于微信的登录实现方式。当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些。 要实现登录我们需要解决两个问题: 1. 在没有输入用户名及密的情况下,如何解决权限安全问题?换句话讲,如...

chuibiaoyao1152的博客 103

C(++) Websocket实现二维码登录---GoEasy

最近在做一个登录功能,为此我还在网上搜了一下关于微信的登录实现方式。当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些。 要实现登录我们需要解决两个问题: 1. 在没有输入用户名及密的情况下,如何解决权限安全问题?换句话讲,如...

178

10行代实现微信登录:Python二维码生成与WebSocket通信实战

你是否曾为开发登录功能而头疼?用户抱怨操作复杂,开发者面对WebSocket(套接字)协议和二维码生成束手无策?本文将以[webWeixin/webWeixin.py](https://link.gitcode.com/i/4a3ba87c25ac5b4cd8804d4e112d29f7)为例,用10行核心代带你掌握Python实现登录的全流程,让你轻松应对企业级应用的身份验证需求。 ...

gitblog_00025的博客 686

微信登录PC端网站应用的案例(C#)

微信登录PC端网站应用的案例(C#)

初见月 1243

python企业微信登录

最近要做web自动化,目前我是用的python+selenium的框架来。因为公司的系统需要登录企业微信账户获取授权,要不然进不了系统,就研究了下。最终的实现方式是获取cookie,然后存入yaml文件。后面直接获取cookie就好。因为cookie是有有效期的,后面我问了开发,可以直接在表里更改有效期,我把它设置成永久有效,就解决复用问题啦。

好多可乐的博客 2215

Java实现二维码登录

实现客户端登录分为下列四步: 1. Web页面生成二维码 生成的二维码中必须要包含一个用于唯一标识用户的数据,这个唯一标识是为了确保将客户端(手机)与web网页绑定,避免其他人登录了你的账号。在这里可以生成以个随机的guid作为唯一标识。 生成二维码,大家可以使用jQuery qrcode插件。 2. 客户端二维码 客户端在二维码之前需要验证是否已经登录了账号,如果没有登录,...

weixin_34120274的博客 2024

C#怎么开发一个微信公众号登录的功能

1.通过调用WxLogin接口获得生成二维码图片的地址和用户登录生成的token,获取一次生成的二维码有效期是60s,过期则二维码不可使用,需要设计为用户重新手动刷新获取。这时候后台用户登录信息会被更新,前端需要间隔1~2s时间去请求Scan接口,获取用户登录信息。前端需要做2件事情,第一获得后台推送生成的图片二维码,第二定时刷新后端的状态接口,得知是否有没有成功。这边会用C#的客户端写一个demo,实际项目里,无论子啊web还是其他任何端,都是一样的原理。获取成功,会返回所有该用户的登录信息。

一个专注于技术研究创新的程序员 2056

PHP Web实时消息后台服务器推送技术--GoEasy

PHP Web实时消息后台服务器推送技术 越来越多的项目需要用到实时消息的推送与接收,怎样用PHP实现最方便呢?我这里推荐大家使用 PHP Web实时消息后台服务器推送技术 ---GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持websocket 和polling两种连接方式,从而可以支持IE6及其以上的所有版本,同时还支持其它浏览器诸如Firefox, Chrome, Safari 等等。 支持不同的开发语言: GoEas

xiaoxiaoxiqincai2的博客 831

Qt版Dalsa线相机的采集Demo

Qt Dalsa

追赶时代的博客 575

eWebEditor V9.0

eWebEditor V9.0 版发布,新增10个皮肤效果,代/文本模式下的查找替换,滚动条自动显示处理,模块支持点击选中块,struts2上传直接支持,等。后台仍旧采用V8.5

上一篇: Websocket web实时消息服务器后台推送技术方案---GoEasy
下一篇: PHP 实现扫码二维码登录
chouda4733
博客等级 码龄10年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值