发布网友 发布时间:2022-02-20 08:58
共4个回答
热心网友 时间:2022-02-20 10:28
其实这个你百度一下确实很多方法来实现这种效果
扫码登录大概的思路是:微信手机客户端从网页二维码里面得到一些信息,然后发送给网页微信的服务器,网页服务器验证信息并响应。下面,我们借助火狐浏览器提供的Firebug工具看看,到底是怎么一回事儿吧!
1.每次打开微信网页版的时候,都会生成一个含有唯一uid的二维码,而且每次刷新后都会改变。这样可以保证一个uid只可以绑定一个账号和密码,确定登录用户的唯一性。可以通过手机上的UC浏览器提供的扫码功能查看二维码里面的信息,但并不会自动打开该地址。我刷新三次,扫描结果如下,其中最后面那串数字就是uid:
1) https://login.weixin.qq.com/l/48e24d66bdbc4f
2) https://login.weixin.qq.com/l/0787fb4fa7ad4c
3) https://login.weixin.qq.com/l/92781a4a7f1c47
通过查看网页源码,这个页面在加载完毕时,已经把很多登录后才需要的相关资源都预先加载进来了,所以登录用户得到确认后展示用户信息的速度很快。
2.除了返回唯一的uid,实际上打开这个页面的时候,浏览器跟服务器还创建了一个长连接,请求uid的扫描记录。如果没有,在特定时长后(目前是27秒左右)会接到状态码408(请求超时),表示应该继续下一次请求;如果接到状态码201(服务器创建新资源成功),表示客户端扫描了该二维码。
3.当用户使用登录后的微信扫描二维码的时候,会将uid和手机微信产生的token进行绑定,并上传到服务器。这个时候,浏览器通过长轮询查询到uid扫描记录,立即得到201响应码,然后通知服务器,客户端由此也进入一个新的页面(就是那个要你点确认的按钮)。在客户端点击确认后,获得服务器授信的令牌,进行随后的信息交互过程。
结语
总的来说,微信扫码登录核心过程应该是这样的:浏览器获得一个唯一的、临时的uid,通过长连接等待客户端扫描带有此uid的二维码后,从长连接中获得客户端上报给服务器的帐号信息进行展示。并在客户端点击确认后,获得服务器授信的令牌,进行随后的信息交互过程。 在超时、网络断开、其他设备上登录后,此前获得的令牌或丢失、或失效,对授权过程形成有效的安全防护。
其实这个思路我自己有一个,可以通过一个认证的公众号来做扫描,不借助微信系统端口来登录!
登录页面需要生成一个随机不重复的KEY,保存到二维码的链接里面,然后像服务器请求把KEY存到数据库,同时写一个每秒请求一次后端接口的轮询,查看这个KEY有没有被扫描,同时确认信息
微信公众号里面调取扫一扫接口扫描接口信息,通过微信的扫一扫接口获取到KEY的值,检测数据库有这个值,同时这个值没有失效,那么把这个值和用户openid绑定存到数据库
轮询没有超时,检测到KEY与openid绑定的话,那么获取openid的所有信息同时存入到session,接着跳转到你需要的页面,这样一个基本的扫码登录的思路就完成了
总结:首先你需要认证公众号,这个是最基础的!其次我说的这个思路虽然可以实现,但是微信有现成的,为什么不用现成的呢?
热心网友 时间:2022-02-20 11:46
https://wx.qq.com/,这是微信网页吧。手机微信扫一扫,就可以登陆追问这个是登录微信,我说想做成通过接api,用户用微信扫描二维码,就可以直接登录我自己的网站。现在很多网站可以使用QQ、微博登录,就类似于这样追答自己的网站上建立一个自己的二维码,网上搜搜,很多这样的工具,,建好后上传到自己网站首页上,设置扫描登录
热心网友 时间:2022-02-20 13:20
你好这个做好了吗,可以分享一下吗热心网友 时间:2022-02-20 15:12
你是想从微信上直接看pc端的网站吗?