php用户第三方登录失败,php 实现网站端qq第三方登录接口及一些注意事项【原创】...
最近工作中使用到了网站端QQ 微信 以及新浪微博的第三方登录,以及获取用户的基本信息,在各自开放平台的官方文档上都有详细的介绍 然而QQ登录的部分接口返回值却与其他的不同 所以这里我就完整的介绍一下网站端QQ登录的流程和返回数据
一、跳转到登录页登录并获取认证
使用url直接传参的方式跳转 https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=你的APPid&redirect_uri=回调地址&state=验证参数
参数列表
response_type
必须
授权类型,此值固定为“code”。
client_id
必须
申请QQ登录成功后,分配给应用的appid。
redirect_uri
必须
成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode。
state
必须
client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。
scope
可选
请求用户授权时向用户显示的可进行授权的列表。可填写的值是API文档中列出的接口,以及一些动作型的授权(目前仅有:do_like),如果要填写多个接口名称,请用逗号隔开。
例如:scope=get_user_info,list_album,upload_pic,do_like
不传则默认请求对接口get_user_info进行授权。
建议控制授权项的数量,只传入必要的接口名称,因为授权项越多,用户越可能拒绝进行任何授权。
登陆后 跳转到之前的redirect_uri 同时返回参数 code 和 state code为认证码 state为之前传递秘钥
二、获取Access_Token
Access_Token为请求操作时的访问令牌 继而可以获取到更多的信息 通过使用curl访问指定接口获取指定接口的输出数据从而得到 Access_Token
接口url为:https://graph.qq.com/oauth2.0/token
传递参数:
grant_type
必须
授权类型,在本步骤中,此值为“authorization_code”。
client_id
必须
申请QQ登录成功后,分配给网站的appid。
client_secret
必须
申请QQ登录成功后,分配给网站的appkey。
code
必须
上一步返回的authorization code。如果用户成功登录并授权,则会跳转到指定的回调地址,并在URL中带上Authorization Code。
例如,回调地址为www.qq.com/my.php,则跳转到:
http://www.qq.com/my.php?code=520DD95263C1CFEA087******
注意此code会在10分钟内过期。
redirect_uri
必须
与上面一步中传入的redirect_uri保持一致。
注意:这里QQ有一个与其他接口不同的地方 他的返回值不是一个json字符串 而是callcallback然后括号包含序列化参数的格式 就像 callcallback(a=xxx&b=xxx)
这里我给出改自官方demo的一段代码将返回值转化为数组
<?php
//$return为获取的返回值
if(strpos($return, "callback") !== false){
$lPos = strpos($return, "(");
$rPos = strrpos($return, ")");
$return = substr($return, $lPos + 1, $rPos – $lPos -1);
$msg = json_decode($return, true);
if(isset($msg[‘error’])){
return $msg;
}
}
$params = array();
parse_str($return, $params);
return $params;
得到参数
参数说明
描述
access_token
授权令牌,Access_Token。
expires_in
该access token的有效期,单位为秒。
refresh_token
在授权自动续期步骤中,获取新的Access_Token时需要提供的参数。
三、获取open_id
每个qq用户对于每个网站都有自己的唯一标识 利用上一步获取的access_token来换取用户的open_id
接口url: https://graph.qq.com/oauth2.0/me
参数
是否必须
含义
access_token
必须
在上一步中获取到的access token。
注意:这里获取的返回值依然不是一个json字符串 而是callcallback然后括号包含json的格式 就像 callcallback(json)
同样给出一段代码
<?php
//$return为获取的返回值
if(strpos($return, "callback") !== false){
$lPos = strpos($return, "(");
$rPos = strrpos($return, ")");
$return = substr($return, $lPos + 1, $rPos – $lPos -1);
$msg = json_decode($return, true);
}
return $msg;
得到参数client_id你的APPID 以及 openid 用户的唯一标识
四、获取用户信息或其他操作
利用之前的申请网站API可以找到需要功能这里以获取用户信息作为例子
接口url:https://graph.qq.com/user/get_user_info
传入参数
access_token: 授权令牌,Access_Token。
oauth_consumer_key: 你的APPID
open_id:上一步获取的open_id
注意:此时获取的返回值变为正常json字符串 可直接使用
返回参数
参数说明
描述
ret
返回码
msg
如果ret<0,会有相应的错误信息提示,返回数据全部用UTF-8编码。
nickname
用户在QQ空间的昵称。
figureurl
大小为30×30像素的QQ空间头像URL。
figureurl_1
大小为50×50像素的QQ空间头像URL。
figureurl_2
大小为100×100像素的QQ空间头像URL。
figureurl_qq_1
大小为40×40像素的QQ头像URL。
figureurl_qq_2
大小为100×100像素的QQ头像URL。需要注意,不是所有的用户都拥有QQ的100×100的头像,但40×40像素则是一定会有。
gender
性别。 如果获取不到则默认返回”男”
is_yellow_vip
标识用户是否为黄钻用户(0:不是;1:是)。
vip
标识用户是否为黄钻用户(0:不是;1:是)
yellow_vip_level
黄钻等级
level
黄钻等级
is_yellow_year_vip
标识是否为年费黄钻用户(0:不是; 1:是)
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/20236.html
微信打赏
支付宝打赏
感谢您对作者Leon的打赏,我们会更加努力! 如果您想成为作者,请点我
php用户第三方登录失败,php 实现网站端qq第三方登录接口及一些注意事项【原创】...相关推荐
- 191119_01 网站集成QQ第三方登录
网站集成QQ第三方授权登录 作者:邵发 官网:http://afanihao.cn/java 本文是Java学习指南系列教程的官方配套文档. 内容介绍如何在网站中集成QQ的第三方授权登录功能,演示项目 ...
- 开机登录失败 提示user profile service服务未能登录,无法加载用户配置文件
开机登录失败 提示"user profile service服务未能登录,无法加载用户配置文件" 问题解决办法 [问题描述] Windows系统开机后,在用户登录界面输入密码无法正 ...
- 网站集成QQ号登录-QQ互联审核(附涉及不良信息解决办法)
本文分享一个网站集成QQ号登录的经验,现在国内做网站可以集成的第三方社交网络登录方式主要有:微信登录,QQ登录,公众号登录,微博登录等,其中微信登录由于要求比较高,很多个人站长没法开通:QQ登录要求比 ...
- 使用QQ互联完成网站的QQ第三方登录(详解+坑)
前言:网站收尾工作,就只剩下第三方登录,去QQ互联注册,提交资料,审核了快一周,创建应用,一直创建不了,后来才发现是QQ互联的问题,耽误了两天又开始创建应用,终于弄好了,建议大家使用QQ第三方的,一定 ...
- 网站实现QQ第三方登录详细步骤
一.准备工作:申请appid,appkey,回调地址(申请时填写的回调地址,重要!) 申请地址:https://connect.qq.com/manage.html#/ 二.放置QQ登录按钮:其实就是 ...
- mysql用户连接次数失败限制_mysql数据库限制多次登录失败,限定用户重试时间...
前言 最近的项目开始进行安全测试,其中有一个安全问题是这样的. 应该增加用户登录失败处理功能,限制非法登录次数. 建议是增加mysql数据库的登陆失败的锁定功能. 相信大家也都会遇到这样的问题,在这里 ...
- java sql 登录失败_JDBC连接到SQL Server:登录失败,用户X
我想设置一个JDBC连接到SQL Server 2008,我创建在SQL Server数据库这样的信息:我安装了JDBCJDBC连接到SQL Server:登录失败,用户X CREATE LOGIN ...
- php第三方登录代码,thinkPHP5项目中实现QQ第三方登录功能
本文实例讲述了thinkPHP5项目中实现QQ第三方登录功能.分享给大家供大家参考,具体如下: 最近用thinkPHP 5框架做了一个婚纱店的项目,在开发过程中需要用到第三方登录,腾讯官方给的案例是几 ...
- python爬虫登录教程_18个网站的Python爬虫登录示例 | 开源项目推荐|python教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ 该项目收集了一些各大网站登陆方式和一些网站的爬虫程序,有的是通过selenium登录,有的是通过抓包直接模 ...
最新文章
- 使用迭代器遍历List的时候修改List报ConcurrentModificationException异常原因分析
- python安卓版turtle模块下载_python之turtle的模块
- x390拆机 升级内存和硬盘_工作效率低下?双十二是时候升级硬盘与内存了
- dbgrid的最小高度设置。否则出现滚动条。
- java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
- python正则表达式快速入门_Python学习笔记——正则表达式入门
- oracle中查询实现以下结果,如何在Oracle中为查询结果分配等级?
- jQuery炫酷特效之遮罩移动效果
- kali之破解隔壁老王wifi
- 1415-2团队博客汇总表
- UP主分析丨B站“肝视频”第一人,追剧的速度都跟不上他。
- 逆向分析:还原 App protobuf 协议加密
- linux系统编程之管道(三):命名管道FIFO和mkfifo函数
- Xcode直接安装ipa
- 一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏!
- lpop 原子_深圳大学张文静教授团队ACS Nano:单原子铂修饰的二硫化钒催化剂提高电催化析氢性能...
- java Locale介绍
- php和html的关系
- OPC配置DCOM解决方案
- java 打印详解_Java格式化输出printf()详解