一、单方扫描登陆
基本的实现流程:
- PC端打开login.html,ajax请求passport.wx.com?appid=123&redirect_uri=monitor.wx.com,服务端响应带有uuid=456和状态码200的内容,再次发起两个ajax请求,一个长轮询/长连接请求monitor.wx.com/is_associate?uuid=456监听服务端uuid是否被关联,一个请求passport.wx.com/getQrCode?uuid=456获取二维码
- 掏出手机,扫描二维码,让用户确认“是否把uuid和代表用户信息的openid”关联
- APP端确认登录,发送请求confirm.wx.com?uuid=123&openid=789,服务端正式关联({'123': '789'})
- PC端在login.html的长轮询/长连接请求终于监听到服务端正式关联,拿到重定向响应monitor.wx.com/is_associate?uuid=456&openid=789
- PC端在login.html发送拿到的monitor.wx.com/is_associate?uuid=456&openid=789请求,服务端发送set_cookie进行设置cookie
二、第三方登录
不过就是多了个中间者(第三方),只需把第三方openid与我方的openid关联就行了。
openid:只是代表着用户信息的凭据而已
三、长轮询和长连接的实现
https://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html