azl397985856 / fe-interview

宇宙最强的前端面试指南 (https://lucifer.ren/fe-interview)
Apache License 2.0
2.84k stars 260 forks source link

【每日一题】- 2020-01-08 扫码登陆是怎么实现的? #92

Closed azl397985856 closed 4 years ago

azl397985856 commented 4 years ago

支付宝,微信,百度等很多APP都可以手机端扫码登陆PC或者网页端等。 这是怎么实现的?

image

azl397985856 commented 4 years ago

首先手机扫码的时候,会读取到二维码编码的文本内容,关于二维码编码和解码逻辑可以参考左耳耗子的二维码的生成细节和原理。 二维码编码的文本内容被读取出来之后,手机端会发送一个请求到后端,同时带上用户的登陆信息和识别出来的内容。 后端将两者在服务端进行一次绑定。 PC端不断轮训(当然也可以借助ws实现主动推送)状态,当服务端完成绑定的时候,轮训的状态会从“未绑定”改为“已绑定”。 这个时候我们同时能够拿到绑定的用户信息,就实现扫码登陆啦