admin管理员组文章数量:1640575
我的小站
网页版微信扫码登录流程
1. 请求页面
先打开https://wx.qq/显示出页面,这时候会加载一堆的html,js等资源。
2. 获取会话UUID
微信Web版本不使用用户名和密码登录,而是采用扫描二维码登录,所以服务器需要首先分配一个唯一的会话ID,用来标识当前的一次登录。
使用get方法,通过请求地址:https://login.weixin.qq/j...
其中,时间戳这个值是当前距离林威治标准时间的毫秒。
get成功,则返回:window.QRLogin.code = 200; window.QRLogin.uuid = "AAAAAAAA"
其中的AAAAAAAA就是我们需要的uuid
3. 获取登录二维码
访问网址:https://login.weixin.qq/q...
这里的XXXXXXX就是我们刚才获取的uuid,这个网址直接显示的就是二维码,该二维码是有有效期的,有效期时长由微信服务端决定。
4. 查询是否扫描二维码登录
显示了二维码以后,用户必须用手机微信扫描这个二维码才能登录。(微信为啥要这么设计?很奇怪的思维。。。我用电脑很多情况不就是因为手机没在旁边吗。。。)
使用get方法,查询地址:https://login.weixin.qq/c...
这里的AAAAAAAA是我们刚才获取的uuid,时间戳同上。tip在第一次获取时应为1,其他次时为0.
如果服务器返回:
window.code=201,
window.userAvatar = base64:img/bbb
则说明此时用户在手机端已经完成扫描,并在网页端显示扫描人的头像。但还没有点击登录,继续使用上面的地址查询。
点击登录后,如果服务器返回:
window.code=200;
window.redirect_uri="https://wx.qq/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=AZBAkjuOKc-2GAHcRBsKNuOt@qrticket_0&uuid=YbHBoVi8_w==&lang=zh_CN&scan=1504160545";
则说明此时用户在手机端已经确认登录,window.redirect_uri=
后面的这个网址(暂称为BB)要记下来,接着要访问这个地址。
如果服务器返回:window.code=408,则说明等待超时,继续使用上面的地址查询。
5. 访问登录地址BB,获得uin、sid、pass_ticket、skey
用get方法,访问在上一步骤获得访问地址BB,并在参数后面加上:&fun=new,会返回一个xml格式的文本,类似这样:
<error>
<ret>0</ret>
<message></message>
<skey>@crypt_d6549c5a_37242e82c0913b75e5d3ad5ef2c7bdba</skey>
<wxsid>n/5yTn844+kHkU66</wxsid>
<wxuin>2799942121</wxuin>
<pass_ticket>JOkd35AoEoi8MVx34qKT6xJVeaS8tT7mo8BFdGlKRfDGRCWKkKLW9DsrA%2BEJ34WM</pass_ticket>
<isgrayscale>1</isgrayscale>
</error>
skey是获取联系人信息的关键信息(比如获取好友(包括订阅的公众号)头像信息),标识当前人的身份。还是检查web端微信心跳的标识。发消息时也会使用。
pass_ticke
版权声明:本文标题:简述网页版微信扫码登录的过程 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729306290a1195067.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论