QQ第三方接口登陆

1.准备工作
申请appid和appkey
appid:应用的唯一标识。在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值。
appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值。
申请地址
https://connect.qq.com/manage.html#/
申请流程
1.开发者资质审核

参考文章:开发者注册流程

  1. 申请appid(oauth_consumer_key/client_id)和appkey(auth_consumer_secret/client_secret);

(1)进入https://connect.qq.com/manage.html#/页面,点击“创建应用”,在弹出的对话框中填写网站或应用的详细资料(名称,域名,回调地址);

(2)点击“确定”按钮,提交资料后,获取appid和appkey。

注意:申请appid时,登录的QQ号码将与申请到的appid绑定,后续维护均需要使用该号码。

注意:对appid和appkey信息进行保密,不要随意泄漏。

2.放置前台QQ登陆按钮

3.获取Access_token
Step1:获取Authorization Code
请求地址:

PC网站:https://graph.qq.com/oauth2.0/authorize

请求方法:

GET
请求参数请包含如下内容:

参数 是否必须 含义
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进行授权。

建议控制授权项的数量,只传入必要的接口名称,因为授权项越多,用户越可能拒绝进行任何授权。

display 可选 仅PC网站接入时使用。
用于展示的样式。不传则默认展示为PC下的样式。

如果传入“mobile”,则展示为mobile端下的样式。
返回说明:

  1. 如果用户成功登录并授权,则会跳转到指定的回调地址,并在redirect_uri地址后带上Authorization Code和原始的state值。如:

PC网站:http://graph.qq.com/demo/index.jsp?code=9A5F************************06AF&state=test

注意:此code会在10分钟内过期。

  1. 如果用户在登录授权过程中取消登录流程,对于PC网站,登录页面直接关闭;对于WAP网站,同样跳转回指定的回调地址,并在redirect_uri地址后带上usercancel参数和原始的state值,其中usercancel值为非零,如:

http://open.z.qq.com/demo/index.jsp?usercancel=1&state=test

Step2:通过Authorization Code获取Access Token
请求地址:

PC网站:https://graph.qq.com/oauth2.0/token

请求方法:

GET

请求参数:

请求参数请包含如下内容:

参数 是否必须 含义
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保持一致。
返回说明:

如果成功返回,即可在返回包中获取到Access Token。 如:

access_token=FE04************************CCE2&expires_in=7776000&refresh_token=88E4************************BE14

参数说明 描述
access_token 授权令牌,Access_Token。
expires_in 该access token的有效期,单位为秒。
refresh_token 在授权自动续期步骤中,获取新的Access_Token时需要提供的参数。

4,获取用户openid
1 请求地址
PC网站:https://graph.qq.com/oauth2.0/me

2 请求方法
GET

3 请求参数
请求参数请包含如下内容:

参数 是否必须 含义
access_token 必须 在Step1中获取到的access token。

4 返回说明
PC网站接入时,获取到用户OpenID,返回包如下:

callback( {“client_id”:”YOUR_APPID”,”openid”:”YOUR_OPENID”} );
openid是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有账号进行绑定。

OpenAPI调用说明
1. 前提说明
1. 该appid已经开通了该OpenAPI的使用权限。

从API列表的接口列表中可以看到,有的接口是完全开放的,有的接口则需要提前提交申请,以获取访问权限。

  1. 准备访问的资源是用户授权可访问的。

网站调用该OpenAPI读写某个openid(用户)的信息时,必须是该用户已经对你的appid进行了该OpenAPI的授权(例如用户已经设置了相册不对外公开,则网站是无法读取照片信息的)。

用户可以进入QQ空间->设置->授权管理进行访问权限的设置。

  1. 已经成功获取到Access Token,并且Access Token在有效期内。

  2. 调用OpenAPI接口
    QQ登录提供了用户信息/动态同步/日志/相册/微博等OpenAPI(详见API列表),网站需要将请求发送到某个具体的OpenAPI接口,以访问或修改用户数据。
    调用所有OpenAPI时,除了各接口私有的参数外,所有OpenAPI都需要传入基于OAuth2.0协议的通用参数:

参数 含义
access_token 可通过使用Authorization_Code获取Access_Token 或来获取。
access_token有3个月有效期。

oauth_consumer_key 申请QQ登录成功后,分配给应用的appid
openid 用户的ID,与QQ号码一一对应。
可通过调用https://graph.qq.com/oauth2.0/me?access_token=YOUR_ACCESS_TOKEN 来获取。

  1. 示例
  2. 以get_user_info接口为例:
    (请将access_token,appid等参数值替换为你自己的)

https://graph.qq.com/user/get_user_info?access_token=YOUR_ACCESS_TOKEN&oauth_consumer_key=YOUR_APP_ID&openid=YOUR_OPENID

  1. 成功返回后,即可获取到用户数据:
    {
    “ret”:0,
    “msg”:”“,
    “nickname”:”YOUR_NICK_NAME”,

    }
注意: 不需要很多的类库 全部下来只有三个文件 。一个类库和两个前台页面,你将类库放到AppCode下面。然后将账号绑定那一块注释掉就行了,或者将账号绑定部分换成你自己系统的。就可以了。程序报错可能是因为我在绑定账号那里用到了别的类,你注释掉就行了 ------------------------------------------------------------ 经过两天的努力 已经成功将QQ登录集成到了 城记网 上。感谢腾讯提供的帮助文档,和关键时刻给的技术支持。我的网站是asp.net写的,有需要的网友可以联系我。 呵呵。(尽管是垃圾站,只要你愿意,又有什么关系呢?) QQ Oauth 只提供PHP的接入demo ,针对 ASP.net 的只有一个网友开发的SDK包,下载地址还老打不开,后来我从CSDN上下载了一个,看了以后感觉太复杂了,我个人感觉做这么个小事情不需要搞个SDK出来,不如自己按帮助文档去写,这样自己写的方法灵活性就高一些,于是就按文档学习开发。其实文档写得很清晰,耐心一看就明白了。 不讲太多的郁闷的过程了,直接说解决办法。 办这个事情主要要知道下面几个事情。 两个重点(如下): 第一个重点:请求Token的步骤, 1:请求未授权的临时token。请求成功以后会转到QQ登录页面。 2:请求已授权的临时token。登陆成功以后获得。 3:请求已授权的Access token。 第二个重点:签名的算法。 签名的值计算有一个指定的规则,请参考腾讯开放社区帮助文档,这是最 好的资料。 注意点: 没有申请APPID和APPKEY的先去申请。 传递的每一参数都要URLENcode,注意是每一个,包括动态生成的签名。    参数之间是有顺序的,是升序排列的,无论有多少个,都要排序。    各个步骤之间是有关联的,下一步的提交往往需要上一步的返回参数。 我采取的文档结构: 总共三个文件 ,非常简单。 一个放在APPcode下面的类。用来发送请求和接待参数。 两个前台页面,主要是对类的调用。 下面把类的代码完全贴出,你知要一看见类,就知道怎么写前台页面了,很简单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值