随机字符串解决大问题之腾讯网如何实现手机扫描二维码登录qq功能的
腾讯网()有一个扫码登录功能很有意思,点击首页一键登录按钮,就会展现一个二维码,用手机qq扫描此二维码就可以使当前手机登录的qq在腾讯网上也为登录状态,很神奇,于是打算一探究竟。
下面为本人理解,并一定是腾讯网的实现流程,如果有腾讯的朋友看到本文,还望给与意见和建议。
现象
1.点击一键登录按钮,出现二维码:
2.手机扫描此二维码,在网页中提示:
3.在手机上点击确认在电脑上登录腾讯网按钮,稍等一两秒,在浏览器中腾讯网成功登录。
我想到的其中可能的原理
如下图所示:
各个步骤:
1.点击一键登录按钮后,网页通过ajax获取腾讯网服务器生成的随机字符串对应的二维码图片,并显示在网页中。腾讯网服务器自己也存一份生成的随机字符串。
2.手机qq打开扫一扫功能,扫描生成的二维码,将二维码转化为字符串
3.手机qq将当前登录的用户qq号码和获取的字符串发送给腾讯网服务器
4.腾讯网服务器根据手机qq发过来的字符串找到之前存储的字符串,并且将手机qq发过来的qq号码和此字符串进行关联。
5.腾讯网服务器将用户置为登录状态,并且将用户相关信息给网页显示。此步骤腾讯网使用ajax轮询的方式,随着html5等技术的流行,也可以改为websocket主动通知的形式。
小结:
1..以上流程为简化抽象后的流程。实际上,腾讯网实现此功能比当前要复杂。比如,在手机扫描后,网页并没有直接登陆,而是在手机端点击点击确认在电脑上登录腾讯网按钮后才能完成登录。猜测除了认证外,此功能实际上还有授权的作用,在其他方面发挥着作用。
2.这种功能方便了用户,手机一扫,轻松完成。不愧在体验为王的年代,腾讯一直屹立不倒。
3.随着O2O概念的兴起,这种使用手机进行认证的方式会越来越普遍。比如在自动售货机上进行移动支付。
随机字符串在其他地方也有很多的用途,随后我将不定期的发布随机字符串在其他场景中的应用文章,希望大家喜欢。