第三方登录:QQ登录接入指南

现在互联网应用一般都会接入QQ登录。但是在接入QQ登录的时候就有点犯晕了。因为摆在他们面前的有2个平台。 一个是 腾讯开放平台,一个是 QQ互联。

QQ互联(QQ开放平台)

如果只是单纯的想要QQ授权登录、分享,而不需要进入腾讯应用宝市场的,那选择QQ互联就可以了,毕竟能满足需求。

腾讯开放平台(应用开放平台)

突然就改成应用开放平台
这里的选择就多了,应用开放平台除了支持基本的信息获取,分享,还可以支持进入应用宝市场等。

这里有要强调的,不管是在QQ互联 ,还是腾讯开放平台,都要注意以下细节:

  • 同一个 APP 的在不同系统(iOS, Android),在申请的时候,最好以一个应用来申请,这样子最后只会有一个appid。申请成多个应用会导致需要维护多个appid。
  • 申请完应用后,各应用间默认是不打通。 如果系统需要各应用间账号打通,需要发一个【应用打通】邮件到到QQ互联平台,地址:
    http://wiki.connect.qq.com/%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%8D%E9%A6%88, 【应用打通】表格可以下载,在填齐资料后,附带公司的营业执照副本电子件,发送到 connect@qq.com 邮箱。申请通过后,用户在同一个公司下不同的应用使用QQ登录时,就会有统一的unionid。

如何获取 code

https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=appid&redirect_uri=redirect_uri&scope=scope&display=display

参数介绍:

  • appid: 应用id
  • redirect_uri: 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,需要将url进行URLEncode
  • state: 必选,client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。
  • scope: 可选,授权列表,多个用逗号隔开
  • display :可选,移动端展示值可设置为mobile

在填充完对应的参数后,扫描完二维码,会跳转到回调地址并携带上code。地址类似于:
https://www.mimeay.cc?code=xxxxx

如何获取 access_token

官方文档其实描述的很详细了:http://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token#Step1.EF.BC.9A.E8.8E.B7.E5.8F.96AuthorizationCode

如何获取Unionid

如何获取openid

Https 请求方式:
Get https://graph.qq.com/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1

返回的结构如下:

 {"client_id":"YOUR_APPID","openid":"YOUR_OPENID","unioid":"YOUR_UNIONID" // 请求参数不含 unionid=1 则不会返回此字段}

这里简单介绍下:

  • access_token: web端或者移动端授权完后所得

  • web端授权完后得到code,后端根据 code 换取 access_token

  • 移动端可直接得到 access_token

  • unionid,这个参数可选,如果带着unionid=1 请求QQ授权的API(前提是已经申请应用打通,要不然会报 companyid not set 的错误), 会返回 client_idopenidunionid, 不带unionid=1,则只返回 client_idopenid

如何在后端验证 access_token的合法性

前面提到移动端可以直接得到 access_token,带着 access_token 去请求 QQ互联提供的API, 是可以获取到用户信息的。 请注意,在unionid落库之前,请先校验是否是合法的授权。
在换取 unioid 时,QQ互联的 API 是有返回 client_id 的, 其实也就是appid,我们只要校验后台的配置是否存在此 appid, 就能验证 access_token 的合法性了

如何获取用户资料

官方文档基本上都有了。包括访问基本信息, 访问用户QQ会员信息
API列表

并不是带着access_token就一定能获取到所有信息,这取决于前面 scope 授权的情况, 如 scope授权列表不含 list_album, 则在请求 ttps://graph.qq.com/photo/list_album时就拿不到相册列表。

文档参考

  • 授权文档:http://wiki.connect.qq.com/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_server-side
  • API 文档 :http://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8

***************************************************************************************************************************************

 

移动 App 接入 QQ 登录/分享流程


这里先要提两个平台,腾讯开放平台和 QQ 互联平台:
(一)腾讯开放平台
官网地址:https://open.tencent.com/
介绍:腾讯开放平台是腾讯对开发者公开的一个服务平台,腾讯号称是一个覆盖10亿账户的热门服务平台,这里是接入应用宝,微信,QQ,腾讯 AI 等的一个入口

(二)QQ 互联平台
官网地址:https://connect.qq.com/index.html
这是具体的接入 QQ 的平台,比如 QQ 登录,QQ 分享,QQ AR


开发者注册


0.想要接入腾讯的提供的一些服务,需要先注册腾讯开发者
1.登录 QQ 互联平台:https://connect.qq.com/devuser.html#/
2.点击自己的头像,完善信息,【注意】图片是自己手持身份证的图片
3.提交审核,等待邮箱通知就可以了,一般需要 3 天左右

创建应用

  • 0.等审核通过之后就可以创建应用申请接入了
  • 1.进入QQ互联官网,点击【应用管理】,点击【创建应用】

2.选择网页还是移动 app

3.填写信息

 

  • 4.获取签名,继续继续填写信息
  • 如果不记得签名,可以将 app 安装手机或者模拟器,然后安装一个 AppManage.apk 工具
  • AppManage.apk 下载地址:就在 Android 开发信息单选框那行的后面

  • 5.完成,等待审核结果

接入 QQ 登录

  • 这里大家就可以根据官方文档,自己根据情况去配置了
  • 官方文档:http://wiki.connect.qq.com/qq登录

 

 

***********************************************************************************************************************

移动应用接入网页QQ登录

在以前应用接入 Android/IOS SDK 后, 如果用户手机没有安装客户端 , 可以直接使用网页授权登录.但是现在腾讯关闭了网页授权登录,转为提示用户.这样的体验很不好 !

但是发现 QQ 音乐、QQ 视频 在没有安装客户端的情况下,依然可以进行 H5 登录 .(一度怀疑是亲儿子的待遇) 后来发现是网页应用授权登录。

开通网页登录比如要面临一个问题 , 网页授权登录和移动授权登录的 OpenId 不一致,服务端无法判定是否为同一用户.。

腾讯的做法是不同应用登录 OpenId 不一样,但是 UnionId 一样. 之前客户端登录都是使用的 OpenId 。因此服务端需要一个接口 , 跑数据库,在数据中新加一个字段, UnionId ,以后不再使用 OpenId ,而使用 UnionId 作为用户唯一标识.。

整个申请流程花了很长时间 :

在腾讯互联注册网页应用 . 申请 网页应用 AppId 和 AppKey. (移动应用和网页应用必须在同一账号下).
联系 QQ 互联客服 , 询问通过 OppenId 获取用户 UnionId 的接口.(我是直接在QQ上联系客服后,客服给了我一个邮箱,你可以将你面临的问题通过邮件沟通具体流程)。
移动应用使用网页登录简要流程 : (具体携带参数,请参考下方链接)

客服端访问后端提供的一个接口。
后端请求 https://graph.qq.com/oauth2.0/authorize 用户登录成功后, 获取 Authorization Code 。
后端请求 https://graph.qq.com/oauth2.0/token 通过Authorization Code获取Access Token 。
后端请求 https://graph.qq.com/oauth2.0/me 获取用户OpenId, UnionId , 服务器比对 UnionId,判断登录还是注册。
webview 与 js 交互,传递 Access Token 和 OppenId ,正常登陆流程。
QQ互联 参考文档 :

http://wiki.connect.qq.com/
http://wiki.connect.qq.com/网站应用接入流程
http://wiki.connect.qq.com/使用authorization_code获取access_token


 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59449.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三方登录实现

第三方登录 自建了一个网站,想要增加一个登录入口,但是自己实现登录又很麻烦, 那么就可以尝试使用第三方登录的方式。 谈到第三方登录就不得不提到OAuth,OAuth是Open Authorization的简写,它就是一种授权机制。数据的所有者告诉…

登录等第三方认证-outh2原理与分析

看了很多关于outh2应用文章,介绍都比较晦涩难懂,同时没有一个实际案例说明, 下面,我将使用securityouth2简单案例讲解,并通过微信认证流程解释为什么这种实现方式是最佳的。 1. Security实现Outh2登录 1.1 项目环境搭…

论文管理系统(登录功能)

目录 一、后端部分 1.1 实体类 1.2 UserMapper类 1.3 Service层 接口 实现类 1.4 controller层 1.5 拦截器 二、前端部分 效果图 源码如下 代码讲解 准备工作和数据库都已经准备好了,接下来我们来写登录功能,登录功能我们通过mybatisplus来码写,所以不需要在UserMapper.…

行人仿真仿而不真——基于Unity将外部仿真数据可视化

0 前言 Unity作为一款生态成熟、扩展性强、学习成本较低的三维引擎,近年来受到各领域研究者的青睐。具体到行人仿真领域,相较于传统的C/Python平台,Unity在效果呈现及数据交互方面具备无可比拟的优势,国外开发者基于Unity已经实现…

教你怎样用Python画了一棵圣诞树,快来学习

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 以下文章来源于IT入门 分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习。 如何用Python画一个圣诞树呢? 最简单&…

分享10个Python绘制圣诞树的源码,拿来即用

大家好,我是丁小杰。 圣诞节就要到了,作为一个的“程序猿”,怎么能够少得了绘制圣诞树呢,今天就和大家分享 10 个圣诞树的绘制源码,拿来即用! 搞笑版 height 5 stars 1 for i in range(height):print((…

Python代码画圣诞树--turtle绘图

效果图 代码如下 import turtle as t import random import pygame import threading import time import tkinter as tkt.screensize(bgblack) # 定义背景颜色,可以自己换颜色def loving_heart(r):l 2 * rt.left(45)t.forward(l)t.circle(r, 180)t.right(90)t.c…

教你用 python 画圣诞树

圣诞节快到了,教你用 python 画圣诞树,送给你女朋友,博主给了三个版本的圣诞树。 博主没有下载专门写 python 的 pycharm,用 VSCode 替代,因为 VSCode 也可以运行 python 代码。 还需要下载一个 python 运行环境&…

用python画圣诞树-使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例

今天为大家介绍几个Python"装逼”实例代码,python绘制樱花、玫瑰、圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import ra…

【圣诞快乐】如何用代码画一颗圣诞树?

文章目录 一、前言二、创意角度三、java swing版 效果展示四、java swing版 实现步骤&代码五、springboot项目banner版 效果展示六、springboot项目banner版 实现步骤七、 linux shell界面打印版 效果展示八、 linux shell界面打印版 实现步骤 一、前言 一年一度的圣诞节来…

美美的圣诞树画出来-CoCube

2022年圣诞节到来啦,很高兴这次我们又能一起度过~ CSDN诚邀各位技术er分享关于圣诞节的各种技术创意,展现你与众不同的精彩!参与本次投稿即可获得【话题达人】勋章【圣诞快乐】定制勋章(1年1次,错过要等下一年喔&#…

圣诞树【Python版】小刘教你画圣诞树

平台准备: 首先安装Python及其编写平台: 此处小刘选择的是Python3.6版本以及PyCharm编写平台 其次安装Python所需的相关包“turtle”以及“random” Python相关包安装: 首先查看Python是否安装: 打开PyCharm在Terminal窗口输…

Python画圣诞树和烟花源代码

最近一直想让女朋友开心开心,眼看就到圣诞了,就想着来个不一样的,给她画个圣诞树玩一玩,也算是自己亲手做的,用了心思了。看了关于画圣诞树的很多博客,人才确实很多啊,鄙人不才,也加…

用python画圣诞树的代码

如何用python画一个圣诞树呢? 一、最简单的绘制圣诞树 代码也特别简单: # 最简单的绘制圣诞树height 5 # 树的高度 stars 1 # 树的雪花数,初始为1 for i in range(height): #…

【送给她的圣诞礼物】尝试用turtle画圣诞树

尝试用turtle画圣诞树 前言开发环境步骤一:加载bgm所念皆星河步骤二:窗口界面初始化步骤三:turtle初始化步骤四:画树的外轮廓步骤五:画雪花步骤六:画花朵步骤七:画五角星开源 前言 今天就是平安…

用 Python 画圣诞树的 N 种玩法

作者 | 写代码的明哥 来源 | Pyhton编程时光 马上就是圣诞节了,先提前祝大家圣诞快乐! 今天来给大家分享一波如何使用 Python 来画一颗圣诞节树,包含多种版本,从平民版到豪华版,像极了一个程度员从入门到高级秃头程序员…

圣诞节到了,教大家用 Python 绘制几棵圣诞树~

大家好,我是大飞 今天是圣诞节,先在这里祝大家圣诞节快乐~~,用英语来表达就是 Merry Christmas ~~, 为了贴合这个氛围,今天分享五种用 Python 绘制圣诞树的方法,从基础到高级,效果也不断攀升分…

【圣诞来了】3分钟教你用java画一颗彩色圣诞树,送给别人作为圣诞礼物吧

⭐️写在前面 这里是温文艾尔の学习之路👍如果对你有帮助,给博主一个免费的点赞以示鼓励把QAQ👋博客主页🎉 温文艾尔の学习小屋⭐️更多文章👨‍🎓请关注温文艾尔主页🍅文章发布日期&#xff1a…

如何用python画圣诞树(附圣诞树代码)

python圣诞树代码 1、简单的绘制圣诞树 新建tree1.py或者直接输入下面代码运行 #声明树的高度 height 5 #树的雪花数,初始为1 stars 1 #以数的高度作为循环次数 for i in range(height): print((’ ’ * (height - i)) (’*’ * stars)) stars 2 #输…

【AI金融】Can ChatGPT Forecast Stock Price Movements? Return Predictability and Large Language Models

titleChatGPT能够预测股票走势吗?回到可预测性与大预言模型出版时间2023年4月6日doiarXiv:2304.07619v3 [q-fin.ST]期刊arXiv类别Null关键词Statistical Finance (q-fin.ST); Computation and Language (cs.CL)文章链接https://arxiv.org/abs/2304.07619 ChatGPT可以…