Web微信登录流程

登录页所做的事

当访问网页微信的主页(https://wx2.qq.com/)时,会去访问https://login.wx2.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx2.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1525764574790(这里最后的_对应的值是时间戳).去获取一个uuid(响应内容window.QRLogin.code = 200; window.QRLogin.uuid = "YYXyArPprg==";),然后将这个uuid的值拼接在https://login.weixin.qq.com/qrcode/后形成一个url作为二维码图片的src属性,此时页面已经渲染完毕.

  然后页面使用长轮循的方式不断地连接https://login.wx2.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=YYXyArPprg==&tip=0&r=-1051207798&_=1525766683725,uuid就是之前访问获得的uuid,后面的_还是时间戳,轮循会有三种不同的状态

  • 一 未扫码状态,响应信息window.code=408;
  • 二 扫码未确认,响应信息window.code=201;window.userAvatar = '头像链接';
  • 三 登录成功,响应在下面

    window.code=200;
    window.redirect_uri="https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A7BtjrrDXHwjHEmiiYA4Eocw@qrticket_0&uuid=YYXyArPprg==&lang=zh_CN&scan=1525766697";

响应成功后会去访问redirect_ur+ "&fun=new&version=v2"获得凭证相关的信息:

https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=A7BtjrrDXHwjHEmiiYA4Eocw@qrticket_0&uuid=YYXyArPprg==&lang=zh_CN&scan=1525766697&fun=new&version=v2&lang=zh_CN

响应

<error><ret>0</ret><message></message><skey>@crypt_1ceb99dd_c3d604ea7da8146bdec612b663539c08</skey><wxsid>oFjQY9AOGEgM5Yic</wxsid><wxuin>2181238037</wxuin><pass_ticket>Y%2BV6W%2F1EA6VuCORrW57oY%2Fpn%2FmTwQJQttR%2B%2FulzyTJq3EmFCagUGNkaKBnKiBuRm</pass_ticket><isgrayscale>1</isgrayscale></error>

获得凭证信息后再根据这些凭证信息去获得用户信息

POST请求https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-1053293819&lang=zh_CN&pass_ticket=Y%252BV6W%252F1EA6VuCORrW57oY%252Fpn%252FmTwQJQttR%252B%252FulzyTJq3EmFCagUGNkaKBnKiBuRm

携带信息

{BaseRequest:{DeviceID:"e364462169579229",Sid:"oFjQY9AOGEgM5Yic",Skey:"@crypt_1ceb99dd_c3d604ea7da8146bdec612b663539c08",Uin:"2181238037"}

 

posted @ 2018-05-08 16:49  瓜田月夜  阅读(1599)  评论(0)    收藏  举报