美文网首页玩转app产品撸技术iOS
扫码登录是如何实现的?

扫码登录是如何实现的?

作者: 耗子吴 | 来源:发表于2015-08-23 17:40 被阅读56942次

    网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢?

    打开网页版微信,可以看到如下的页面:

    微信扫码界面

    如果你用我查查、支付宝、新浪微博等软件扫码二维码,你会发现此二维码解析出来是如下的网址:

    https://login.weixin.qq.com/l/obsbQ-Dzag==
    

    接下来详细介绍一下扫码登录具体的每个步骤:

    扫码登录完整流程

    ①:用户 A 访问微信网页版,微信服务器为这个会话生成一个全局唯一的 ID,上面的 URL 中 obsbQ-Dzag== 就是这个 ID,此时系统并不知道访问者是谁。

    ②:用户A打开自己的手机微信并扫描这个二维码,并提示用户是否确认登录。

    ③:手机上的微信是登录状态,用户点击确认登录后,手机上的微信客户端将微信账号和这个扫描得到的 ID 一起提交到服务器

    ④:服务器将这个 ID 和用户 A 的微信号绑定在一起,并通知网页版微信,这个 ID 对应的微信号为用户 A,网页版微信加载用户 A 的微信信息,至此,扫码登录全部流程完成

    扫码登录看起来神奇,主要是因为微信 APP 扫自家的码会做一些普通二维码软件不会做的额外的操作,那就是将当前已登录的微信和扫出来的 ID 提交到微信服务器,类似的应用还有扫码支付、扫码加公众号等功能,关于二维码在产品设计中的应用,推荐另一篇文章:《二维码这把利刃,产品应该用到极致》。

    我的公众号:PMCraft,每周推送产品相关原创文章,欢迎关注。

    公众号 PMCraft

    相关文章

      网友评论

      • 65724ee6dd95:服务端是如何通知客户端的? 没有干货
        耗子吴:@git_08f0 socket,很偏技术了
      • 韩一尾:学习了。
      • Klart:我以为是技术篇!!!!
      • 4ebd9e55019e:说的好浅
      • 什千:好文
      • 长安纵歌:ID的作用是什么呢?
      • c33124b53520:第四步, 服务器这面通知页面~
      • zsy226:请问这个二维码一般多久刷新一次?我是指安全机制上的每隔几秒或几分钟的刷新,不是每次打开登录时的刷新,请赐教。
        耗子吴:@zsy226 这个完全服务器来控制,不确定微信是多久
      • diandiandidi:实现客户端扫码登录分为下列四步:
        1. Web页面生成二维码
        生成的二维码中必须要包含一个用于唯一标识用户的数据,这个唯一标识是为了确保将客户端(手机)与web网页绑定,避免其他人登录了你的账号。在这里可以生成以个随机的guid作为唯一标识。
        生成二维码,大家可以使用jQuery qrcode插件 (http://www.ideawu.net/blog/archives/795.html)。
        2. 客户端扫描二维码
        客户端在扫描二维码之前需要验证是否已经登录了账号,如果没有登录,则需要提示用户先登录。如果已经登录了,那么在扫描了二维码后应读取唯一标识guid并将sessionID一并发送给后台服务器(例如Java)。
        3. 通过GoEasy服务器主动告知web网页登录成功
        后台服务器接收到请求后通过GoEasy将sessionID主动推送给拥有相同唯一标识的web网页。
        GoEasy后台实时推送到web :http://www.cnblogs.com/jishaochengduo/articles/5552645.html
        Java实现二维码扫码登录:http://goeasy.io/www/demo/qrcodelogin
        4. Web浏览器设置登录的相关cookie信息
        Web浏览器收到消息中包括了登录相关的sessionID,浏览器通过javascript代码就可以把cookie加入到浏览器中,这是浏览器就完成了登录。
      • 流河:原来这么简单啊,回去写一个
      • d826e05d279a:请教一个问题,网页中点击微信实现扫码登录,这个二维码是怎么生成的请问
        寂寞的棍棍:这个二维码肯定是微信公众平台生成的,你把openid,secret,同步回调url等传给微信,打开微信给你的特定url。微信会自动生成二维码,用户扫码以后登录成功,维信会跳回你刚才传给微信的特定url,并把用户唯一标志给你。你拿到微信标志后请求微信特定的获取基本信息的接口,就可以拿到很多用户信息。
      • 柴桑养竹人:终于明白了 :smirk:
      • 5601cab8290a:学习了
      • 874c8f4bcd27:然并卵
      • 63d16ae13260:不明觉厉!
      • 长企:谢谢分享
      • 1d614e929473:URL(统一资源定位符)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
      • 生椒牛肉:感谢普及知识。
      • PowerQuery:感谢,涨姿势
      • f6854dd94ba8:涨姿势了!虽然有些看的晕,呵呵
      • 2f3e8481036f:只是URL换了一种表达方式
      • 67af677ba3dd:我总感觉二维码是带着我们从一维空间走到二维空间。。不知为何
      • 15too:涨知识
      • 一一无痕:赞微 微你妹

      本文标题:扫码登录是如何实现的?

      本文链接:https://www.haomeiwen.com/subject/oydxcttx.html