为什么要使用用户授权
1.获取用户信息
2.获取用户上传,分享的视频
3.帮助用户做上传视频、获取播放地址、获取相应信息等动作
如何使用用户授权
1.通用授权方式
最常用的授权方式,标准OAuth2授权协议
2.隐式授权方式
又叫JS授权,如果你是单纯的页面应用(无服务器端),这是你的选择
3.企业级授权方式
最直接的授权方式,用户名密码直接授权,由于这种授权方式会暴露用户密码给第三方,因此我们只提供给合作级别应用使用
相关接口定义
1.授权码授权方式
接口名称 |
用于请求authorization code |
接口地址(RESTFUL) |
https://openapi.iqiyi.com/api/oauth2/authorize?client_id=APP_KEY&response_type=code&redirect_uri=http://777dwyxczyw.dc295.com |
HTTP方法 |
GET |
参数 |
必须 |
说明 |
client_id |
true |
申请应用时分配的app_key |
redirect_uri |
true |
授权成功后的回调地址,即第三方应用的url |
response_type |
true |
授权类型,为code |
display |
false |
授权页面的终端类型,取值见下面的说明 |
state |
false |
用于保持请求和回调的状态,授权请求成功后原样带回给第三方。该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。参数设置建议为简单随机数+session的方式 |
返回结果 |
http://777dwyxczyw.dc295.com?code=CODE |
返回值 |
code |
用来换取accesstoken的授权码,有效期为10分钟 |
Display参数说明:
参数取值 |
类型说明 |
default |
默认的授权页面,适用于web浏览器 |
mobile |
移动终端的授权页面,适用于支持html5的手机 |
2.请求access_token
接口名称 |
用于请求accesstoken |
接口地址(RESTFUL) |
https://openapi.iqiyi.com/api/oauth2/token?client_id=APP_KEY&client_secret=APP_SECRET&redirect_uri=http://777dwyxczyw.dc295.com&grant_type=authorization_code&code=CODE |
HTTP方法 |
GET |
参数 |
必须 |
说明 |
client_id |
true |
申请应用时分配的app_key |
client_secret |
true |
申请应用时分配的app_secret |
grant_type |
true |
authorization_code |
code |
true |
调用authorize时返回的code |
redirect_uri |
true |
回调地址,必须和请求code时的redirect_uri一致 |
state |
false |
用于保持请求和回调的状态,授权请求成功后原样带回给第三方。该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。参数设置建议为简单随机数+session的方式 |
返回值(JSON) |
{
‘access_token ’=> ACCESS_TOKEN,??? // 访问令牌
‘expires_in’=>60,???????????????? // 过期时间
‘refresh_token’=> REFRESH_TOKEN,????? // 刷新令牌
} |
返回值 |
access_token |
访问第三方资源的凭证 |
expires_in |
accesstoken过期时间,以返回的时间的准,单位为秒,注意过期时提醒用户重新授权 |
refresh_token |
刷新token |
3.刷新access_token
接口名称 |
用于请求accesstoken |
接口地址(RESTFUL) |
https://openapi.iqiyi.com/api/oauth2/token?client_id=APP_KEY&grant_type=refresh_token&refresh_token=REFRESH_TOKEN |
HTTP方法 |
GET |
参数 |
必须 |
说明 |
client_id |
true |
申请应用时分配的app_key |
grant_type |
true |
调用authorize时返回的refresh_token |
refresh_token |
true |
刷新令牌refresh_token |
返回值(JSON) |
{
‘access_token ’=> ACCESS_TOKEN,??? // 访问令牌
‘expires_in’=>60,???????????????? // 过期时间
‘refresh_token’=> REFRESH_TOKEN,????? // 刷新令牌
} |
返回值 |
access_token |
访问第三方资源的凭证 |
expires_in |
accesstoken过期时间,以返回的时间的准,单位为秒,注意过期时提醒用户重新授权 |
refresh_token |
刷新token |
4.隐式授权方式(Implicit)
接口名称 |
用于请求authorization code |
接口地址(RESTFUL) |
https://openapi.iqiyi.com/api/oauth2/authorize?client_id=APP_KEY&response_type=code&redirect_uri=http://777dwyxczyw.dc295.com |
HTTP方法 |
GET |
参数 |
必须 |
说明 |
client_id |
true |
申请应用时分配的app_key |
redirect_uri |
true |
授权回调地址,必须和应用注册的地址一致 |
response_type |
true |
授权类型,为token |
state |
false |
用于保持请求和回调的状态,授权请求成功后原样带回给第三方。该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。参数设置建议为简单随机数+session的方式 |
返回结果 |
http://777dwyxczyw.dc295.com?access_token=ACCESS_TOKEN&expires_in=60 |
返回值 |
access_token |
访问第三方资源的凭证 |
expires_in |
accesstoken过期时间,以返回的时间的准,单位为秒,注意过期时提醒用户重新授权 |
5.验证访问令牌
接口名称 |
检查访问令牌access_token有效性 |
接口地址(RESTFUL) |
https://openapi.iqiyi.com/api/oauth2/validation?access_token=ACCESS_TOKEN |
HTTP方法 |
GET |
参数 |
必须 |
说明 |
access_token |
true |
开放平台分配的access token,OAuth授权后获得 |
返回结果 |
{
‘code ’: A00000,
‘data ’: {
‘uid’ : 12348901
}
} |
状态码 |
A00000 |
成功 |
Q00001 |
失败 |
6.错误码定义
错误码(error) |
错误编号(error_code) |
错误描述(error_description) |
redirect_uri_mismatch |
A21322 |
重定向地址不匹配 |
invalid_request |
A21323 |
请求不合法 |
invalid_client |
A21324 |
client_id或client_secret参数无效 |
invalid_grant |
A21325 |
提供的Access Grant是无效的、过期的或已撤销的 |
unauthorized_client |
A21326 |
客户端没有权限 |
expired_token |
A21327 |
token过期 |
unsupported_grant_type |
A21328 |
不支持的 GrantType |
unsupported_response_type |
A21329 |
不支持的 ResponseType |
access_denied |
A21330 |
用户或授权服务器拒绝授予数据访问权限 |
temporarily_unavailable |
A21331 |
服务暂时无法访问 |