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

web 专栏收录该内容
1 篇文章 0 订阅

    闲来无事,研究了下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

其实这个界面重要的是这个页面的子页面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

返回<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <script>
         window.parent.postMessage("{\"action\":\"qclogin_success\"}", "https://graph.qq.com");
    </script>
</head>
<body>
</body>
</html>

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

  • 0
    点赞
  • 0
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

归隐的许攸

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值