QQ登录OAuth2.0的处理流程


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登录功能。 

Step1:获取access_token

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由每次用户登录时生成,过期时间默认为三个月,用户再次登录时自动刷新。

Step2:根据access_token获得对应用户身份的openid

请求地址:
PC网站:https://graph.qq.com/oauth2.0/me
WAP网站:https://graph.z.qq.com/moc2/me

请求方法:
GET

请求参数:

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

QQ截图20170209150321.png

返回说明:
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时,发生错误。

Step3:调用OpenAPI,来请求访问或修改用户授权的资源

调用OpenAPI时需要用到如下3个值:
YOUR_APP_ID:即申请QQ登录成功后分配的appid(如222222)
YOUR_ACCESS_TOKEN:Step1获取到的access token,必须保证未过期(如E0632E6CE12AC709999)
YOUR_OPENID:Step2获取到的openid,用户唯一标识(如B9DD537D1C5C98A9999)