1. QQ空间OAuth简介OAuth (开放授权) 是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。OAuth是OpenID的一个补充,但是完全不同的服务。
为了保护腾讯QQ空间用户的数据,所有第三方网站都需要通过OAuth认证机制来获得用户的授权。本文档提供了QQ空间OAuth认证的相关信息,如果您需要用户在您的网站上可以访问或修改他们在QQ空间上的数据(联系人列表,照片,分享),请详细阅读本文档。
需要注意的是,本文档的目的是向第三方说明如何调用腾讯提供的接口来实现QQ空间OAuth认证。如果您想对OAuth开放标准进行扩展阅读,请参看: –OAuth标准(英文) –OAuth维基百科(中文) 2. 起步之前在调用腾讯提供的接口实现QQ空间OAuth认证之前,你需要提交申请给腾讯方,以获取开发编程时必须用到的key和密钥信息。
请发送邮件至connect.opensns@qq.com来提交你的申请,邮件中包含如下信息:
字段名称 |
字段值说明 |
网站中文名 |
10个中文字以内 |
网站简介 |
35个中文字以内 |
网站根域名 |
如www.qq.com |
登录页地址 |
放置登录按钮的登录页URL |
网站LOGO |
60×60尺寸,图片作为邮件附件,这里填入附件的名称 |
认证空间QQ号码 |
非强制提交项。如申请过认证空间,最好提供认证空间的QQ号码 |
腾讯方会尽快给您答复。如果申请成功,您将会收到如下信息:
oauth_consumer_key |
应用的唯一KEY标记(对应Qzone的appid) |
oauth_consumer_secret |
该KEY的密钥(对应Qzone的appkey) |
注:后续流程中很多步骤需要用到key和密钥信息,请妥善保存,并注意不要泄漏。
3. Qzone OAuth总体处理流程及接口说明3.1 总体处理流程Qzone OAuth总体处理流程里共有七个步骤,见下文Qzone OAuth单步详解中的说明。总体流程如下图所示: 从上图中可以看到,左侧为第三方网站需要做的事情,在每个绿色的方框里,表明了应该调用的接口,共三个。 接口主要功能及接口逻辑见3.2-3.4节的说明。
3.2 client_proxy该接口需要第三方实现。 主要功能:响应用户的点击;获取到未授权的临时token;发起到空间用户授权的跳转。 实现流程见下图:
3.3 client_bind该接口需要第三方实现。 主要功能:接受空间的跳转,获取到授权后的临时token;实现用户的绑定(注册)。 实现流程见下图:
3.4 client_data该接口需要第三方实现。主要功能:响应用户的点击;换取访问token;与空间交互数据。 实现流程见下图:
4 Qzone OAuth单步详解4.1 使用前的注意事项1.请使用HTTP的get方式发送请求。 2.关于签名oauth_signature,推荐一个测试地址:http://term.ie/oauth/example/index.php 4.2 请求未授权的request token将您的请求发送到: http://open.qzone.qq.com/oauth_request_token 请求参数请包含如下内容:
参数 |
含义 |
oauth_consumer_key |
应用的唯一KEY标记 |
oauth_nonce |
随机字符串 |
oauth_timestamp |
时间戳 |
oauth_version |
版本号,请固定使用1.0 |
oauth_signature_method |
签名方法,请固定使用HMAC-SHA1 |
oauth_signature |
签名值 |
4.3 生成未授权的request token 如果3.1请求成功,将返回如下内容:
参数 |
含义 |
oauth_token |
未授权的临时token |
oauth_token_secret |
token的密钥,该密钥一直保持不变 |
4.4 引导用户到Qzone授权页将请求发送到: http://open.qzone.qq.com/oauth_authorize 请求参数请包含如下内容:
参数 |
含义 |
oauth_consumer_key |
应用的唯一KEY标记 |
oauth_token |
未授权的临时token |
oauth_callback |
回调地址 |
4.5 Qzone引导用户到第三方app如果3.3请求成功,在用户授权成功后会跳转到3.3中指定的回调地址,并在参数后面附带如下值:
参数 |
含义 |
oauth_token |
未授权的临时token |
openid |
该用户的OpenID,该OpenID与用户QQ号码一一对应 |
oauth_signature |
签名值,方便第三方来验证openid以及来源的可靠性。 |
4.6 请求access token 将请求发送到: http://open.qzone.qq.com/oauth_access_token 请求参数请包含如下内容:
参数 |
含义 |
oauth_consumer_key |
应用的唯一KEY标记 |
oauth_token |
授权后的临时token |
oauth_nonce |
随机字符串 |
oauth_timestamp |
时间戳 |
oauth_version |
版本号,请固定使用1.0 |
oauth_signature_method |
签名方法,请固定使用HMAC-SHA1 |
oauth_signature |
签名值 |
4.7 生成access token如果3.3请求成功,将返回如下内容:
参数 |
含义 |
oauth_token |
具有访问权限的token |
4.8 访问或修改空间受保护的资源将请求发送到某个具体的业务接口。
请求参数请包含如下内容:
参数 |
含义 |
oauth_consumer_key |
应用的唯一KEY标记 |
oauth_token |
具有访问权限的token |
oauth_nonce |
随机字符串 |
oauth_timestamp |
时间戳 |
oauth_version |
版本号,请固定使用1.0 |
oauth_signature_method |
签名方法,请固定使用HMAC-SHA1 |
oauth_signature |
签名值 |
openid |
该用户的OpenID,该OpenID与用户QQ号码一一对应 |
页面地址:http://connect.opensns.qq.com/ |