目录[隐藏]
|
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。
QQ登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程更简单和安全。
Tips:
如果您想对OAuth2.0开放标准进行扩展阅读,请参看:OAuth标准(英文) | OAuth维基百科(中文)
申请地址:
http://connect.qq.com/intro/login/
申请流程:
1. 点击页面上的“申请加入”按钮,申请成为开发者;
2. 申请appid(oauth_consumer_key/client_id)和appkey(auth_consumer_secret/client_secret);
(1)进入 http://connect.qq.com/manage/ 页面,点击“立即添加”,在弹出的对话框中填写网站或应用的详细资料(名称,域名,回调地址);
(2)点击“确定”按钮,提交资料后,获取appid和appkey。
注意:申请appid时,登录的QQ号码将与申请到的appid绑定,后续维护均需要使用该号码。
接入QQ登录时,网站需要不停的和手机Qzone进行交互,发送请求和接受响应。
PC网站:在你的服务器上ping graph.qq.com,保证连接畅通。
WAP网站:在你的服务器上ping open.z.qq.com 和 ping graph.z.qq.com,保证连接畅通。
QQ登录OAuth2.0的处理流程主要包括以下三个步骤:
1. 获取access_token;
2. 根据access_token获得对应用户身份的openid;
3. 根据access_token与openid调用OpenAPI,来请求访问或修改用户授权的资源(例如用户资料,日志,相册,说说等信息)。
为方便网站快速接入,QQ登录提供了JS SDK,粘贴代码到网页,即可实现QQ登录功能。
为方便移动应用快速接入,QQ登录提供了Android SDK和IOS SDK,应用只需要修改少量代码,即可快速实现QQ登录功能。
QQ登录OAuth2.0针对网站、移动应用、桌面应用分别提供了不同的登录验证和授权流程,目前提供以下2种获取access token的方式:
1. server-side模式
即OAuth官方文档中提到的Authorization Code模式,适用于需要从web server访问的应用。
2. client-side模式
即OAuth官方文档中提到的Implicit模式,适用于需要通过客户端访问的方式。
以上两种模式仅在获取access_token时有所区别,后续获取openid、调用API等方式均相同。
登录成功后,开发者会得到表示此次登录信息的access token,此参数在访问用户授权信息中会用到。
access token由每次用户登录时生成,过期时间默认为三个月,用户再次登录时自动刷新,请网站或应用做好防过期策略,或过期后提示用户再次授权。
请求地址:
PC网站:https://graph.qq.com/oauth2.0/me
WAP网站:https://graph.z.qq.com/moc2/me
请求方法:
GET
请求参数:
请求参数请包含如下内容:
参数 | 是否必须 | 含义 |
---|---|---|
access_token | 必须 | 在Step1中获取到的access token。 |
返回说明:
PC网站接入时,获取到用户OpenID,返回包如下:
callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );
WAP网站接入时,返回如下字符串:
client_id=100222222&openid=1704************************878C
openid是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有账号进行绑定。
错误码说明:
接口调用有错误时,会返回code和msg字段,以url参数对的形式返回,value部分会进行url编码(UTF-8)。
PC网站接入时,错误码详细信息请参见:100000-100031:PC网站接入时的公共返回码。
WAP网站接入时,错误码详细信息请参见:9000-9999:根据Access Token获得对应用户身份的openid时,发生错误。
调用OpenAPI时需要用到如下3个值:
YOUR_APP_ID:即申请QQ登录成功后分配的appid(如222222)
YOUR_ACCESS_TOKEN:Step1获取到的access token,必须保证未过期(如E0632E6CE12AC709999)
YOUR_OPENID:Step2获取到的openid,用户唯一标识(如B9DD537D1C5C98A9999)
详见:【QQ登录】OpenAPI2.0调用说明
我们提供了两种典型的应用使用Qzone_OAuth2.0验证方式的新手指引:
1. 【QQ登录】开发攻略_Server-side
2. 【QQ登录】开发攻略_Client-side
在指引中以实例step-by-step的讲解OAuth2.0的授权验证,以及访问OpenAPI获取用户信息的过程。