**扫码登陆:**首先要在平台登录,比如使用qq登录首先得登录qq。
流程:手机登录&打开网页二维码登录页(二维码有时效5-10分钟左右,超时会过期)----->手机扫码之后跳转到一个页面,这个页面至少有两个按钮:确认登录/取消登录----->手机上点击确认登录--------手机上显示登陆成功&电脑网页显示登录成功并且跳转,以及显示登陆人信息。
注意考虑链接带参数和轮询。
保证的关键点:A用户登录手机账号,扫码a电脑上的二维码,只能让a电脑上显示A用户登陆状态(不能显示其他用户),而没有扫过的b电脑不能显示登录。
网上有现成的方法可以进行二维码图片转换成对应字符串的方法。
二维码生成器
请求链接带参数的:
猜想流程:
浏览器使用百度出来的方法进行二维码生成,然后手机端扫码的时候人工智能识别出字符串之后在后面拼上从当前qq/微信的cookie中得到的一个用户标识,比如id,然后点击确定登录,将这个字符串返回给服务器,服务器通过拼接的后面的id进行身份验证,如果正确就进行页面跳转并且仍然将身份信息作为参数传递给浏览器,从而显示出当前登录用户是谁,同时手机端显示登录成功,反之显示登陆失败。
步骤设计:(所有的各种端之间进行数据访问都可以是用ajax实现)
PC端:
js计时器–用于轮询服务器查看当前状态,
二维码(包含二维码标识)
2.电脑请求服务器(后端)打开一个自己页面专属的二维码(url+标记),并且js定时器每隔一段时间带着自己二维码标记向服务器发送请求(servlet的一个接口实现)查看登录状态。
4.获取到服务器传来的信息在页面中显示出二维码。
7.js定时器轮询发现状态为正在登录,二维码图片消失,变成正在登录中…拒绝其他人扫码。
10.js定时器轮询发现状态为已登录,则去服务器端获取当前扫码用户的标识,去数据库查询全部信息,二维码位置从正在登录中…变为已登录,正在页面跳转,进入其他页面并显示出登录用户。
服务器端:
给每个页面生成对应的二维码页面的二维码的标识id,以及相应状态(初始为未登录)
存储登录的手机的信息。
3.服务器端像pc端发送生成该网页下的二维码的id,以及状态设置为未登录。
6.服务器根据用户获取到的对应网页的二维码标记,将该网页状态修改为正在登录。
9.服务器端根据手机身份标识在数据库拿到全部身份信息,同时根据二维码标识修改状态为已登录。
移动端:
手机信息标识
1.手机账户密码登录,将登录信息存入服务器。
5.手机扫码得到二维码中的url+二维码id标记------>跳转到登录页面(包括一个"确认登陆"+“取消登录”)
8.点击确认登录,向服务器端传递手机自身标识信息和扫描的页面的二维码信息给服务器端。