https://login.weixin.qq.com/l/obsbQ-Dzag==
移动端的问题解决了 重点是 服务器怎么通知web 完成登录。接下来详细介绍一下扫码登录具体的每个步骤:
扫码登录完整流程①:用户 A 访问微信网页版,微信服务器为这个会话生成一个全局唯一的 ID,上面的 URL 中
obsbQ-Dzag==
就是这个 ID,此时系统并不知道访问者是谁。②:用户A打开自己的手机微信并扫描这个二维码,并提示用户是否确认登录。
③:手机上的微信是登录状态,用户点击确认登录后,手机上的微信客户端将微信账号和这个扫描得到的 ID 一起提交到服务器
④:服务器将这个 ID 和用户 A 的微信号绑定在一起,并通知网页版微信,这个 ID 对应的微信号为用户 A,网页版微信加载用户 A 的微信信息,至此,扫码登录全部流程完成
其实就是server端如何通知web端的问题,两个方案,一个是轮询,一个是websocket
方案一:出现一个二维码,这个时候,前端用登录页面的url做出一个二维码,当然,还得做出一个唯一的标识当做参数传递过去,然后呢,二维码做出来的同时,向服务器发送ajax把刚才的唯一标识传递过去。
服务器接收到标识的时候,挂起就好了。不发送响应。(这个估计有点坑)
然后你手机可以拿出来扫码了。扫码就等于在手机打开了登录界面。然后你的一系列和服务器交互。都是一样的。
然后服务器不是还挂起的呢吗?你可以设定一个定时的东西,30秒之内,如果你在手机端的登录的标识成功了。那么就给你返回一个成功的标识,然后你的pc端就可以正常的进入系统了。如果超过时间了,那么就返回一个超时的提示,让他重新扫码登录。
方案二:参考链接:http://www.ideawu.net/blog/archives/793.html 通过 comet 服务器告知网页登录成功