web端接入QQ第三方登陆获取本地QQ登陆信息流程

    闲来无事,研究了下web端接入QQ第三方登陆的相关步骤,大致学习后分为两大部分:

1.需要接入第三方接入的web开发者和腾讯服务器的交互(后端)

    仔细看了下QQ开放者平台的解释说明分析了第三方登陆的业务需求,第三方登陆旨在不再本web应用下创建账号使用的是第三方账号如QQ账号 微信账号,这是如何实现的呢,QQ账号信息保存在腾讯服务器上  普通的web应用如何识别某个特定的QQ账号并实现绑定?

   用户QQ登陆过程发生在腾讯服务器上,经过重定向和Cookie再次植入跳转到web应用界面 发送请求含有 openID 和authroizeInfo信息  web应用根据有时效性的特征值请求腾讯服务器获取QQ基本信息实现绑定的过程.当然具体需要申请appId,腾讯验证有接入第三方登陆的资格才可接入,这些具体流程可以查看官方文档,这里就不说了。

2.前端QQ登陆需要跳转的链接和发送的请求(前端请求过程)

       跳转到https://graph.qq.com/oauth2.0/show?which=Login&client_id=100270989&redirect_uri=https%3A%2F%2Fpassport.csdn.net%2Faccount%2Flogin%3FpcAuthType%3Dqq%26state%3Dtest

web端接入QQ第三方登陆获取本地QQ登陆信息流程_第1张图片

其实这个界面重要的是这个页面的子页面https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=716027609&s_url=https%3A%2F%2Fgraph.qq.com%2Foauth2.0%2Flogin_jump   

这种能显示头像和昵称的必须是PC端QQ登陆之后的结果, 惊奇的发现web端能获取PC端QQ登陆信息,比较好奇,研究了一下主要是走了下面的几步

//访问PC QQ本地服务9401
https://127.0.0.1:9410/?cmd=101&service=1&action=undefined&timeout=5000&_tk=0.5856267607751375&encrypt=0&_ts=1552986685280&callback=pt_qqprotect_version&wparam=&lparam=&session=

//获取token本地加密后请求
https://127.0.0.1:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.7376474328452092&pt_local_tk=1828247916

返回PC端QQ账号昵称

//获取QQ用户的头像

https://ssl.ptlogin2.qq.com/getface?appid=716027609&imgtype=3&encrytype=0&devtype=0&keytpye=0&uin=877682434&r=0.9293450205955125

返回json字符串

pt.setHeader({"877682434":"https://thirdqq.qlogo.cn/g?b=sdk&k=r10kWFGqkWWdzxdvXnkxvg&s=100&t=1552979005"})

链接指向资源便是图像资源,惊奇的发现这个链接是无需token的 uin为qq账号,这个链接可查询任意QQ用户的头像,喜欢的同学试试吧!

//点击头像登陆

https://graph.qq.com/oauth2.0/login_jump

返回


   
   



当然需要上下文的支持 添加cookie什么的

你可能感兴趣的:(web)