免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
了解OAuth2.0

使用OAuth2.0訪問豆瓣API

豆瓣支持OAuth2.0協(xié)議的授權(quán)訪問。關(guān)于OAuth2.0協(xié)議規(guī)范,請(qǐng)參考這里。

使用OAuth2.0的流程可以簡單概括為:

  1. 應(yīng)用向豆瓣請(qǐng)求授權(quán)
  2. 豆瓣為用戶顯示一個(gè)授權(quán)頁面,用戶在此頁面確認(rèn)是否同意應(yīng)用的請(qǐng)求
  3. 如果用戶同意授權(quán),應(yīng)用會(huì)獲取到一個(gè)訪問令牌(access_token),通過此令牌,應(yīng)用可以訪問授權(quán)用戶的數(shù)據(jù)。
  4. 如果訪問需要授權(quán)的Api,請(qǐng)使用https協(xié)議,加上access_token的Header,具體見獲取access_token

豆瓣支持三種OAuth2.0的授權(quán)流程:

flow 與 native-application flow

這兩種授權(quán)流程基本相同,需要通過兩步來獲取access_token。

獲取authorization_code

通過在瀏覽器中訪問下面的地址,來引導(dǎo)用戶授權(quán),并獲得authorization_code

https://www.douban.com/service/auth2/auth

參數(shù):

參數(shù)名稱參數(shù)說明
client_id必選參數(shù),應(yīng)用的唯一標(biāo)識(shí),對(duì)應(yīng)于APIKey
redirect_uri必選參數(shù),用戶授權(quán)完成后的回調(diào)地址,應(yīng)用需要通過此回調(diào)地址獲得用戶的授權(quán)結(jié)果。此地址必須與在應(yīng)用注冊(cè)時(shí)填寫的回調(diào)地址一致。
response_type必選參數(shù),此值可以為 code 或者 token 。在本流程中,此值為 code
scope可選參數(shù),申請(qǐng)權(quán)限的范圍,如果不填,則使用缺省的scope。如果申請(qǐng)多個(gè)scope,使用逗號(hào)分隔。
state可選參數(shù),用來維護(hù)請(qǐng)求和回調(diào)狀態(tài)的附加字符串,在授權(quán)完成回調(diào)時(shí)會(huì)附加此參數(shù),應(yīng)用可以根據(jù)此字符串來判斷上下文關(guān)系。

注意:此請(qǐng)求必須是HTTP GET方式

例如:

https://www.douban.com/service/auth2/auth?  client_id=0b5405e19c58e4cc21fc11a4d50aae64&  redirect_uri=https://www.example.com/back&  response_type=code&  scope=shuo_basic_r,shuo_basic_w,douban_basic_common

返回結(jié)果:

  • 當(dāng)用戶拒絕授權(quán)時(shí),瀏覽器會(huì)重定向到redirect_uri,并附加錯(cuò)誤信息

    https://www.example.com/back?error=access_denied
  • 當(dāng)用戶同意授權(quán)時(shí),瀏覽器會(huì)重定向到redirect_uri,并附加autorization_code

    https://www.example.com/back?code=9b73a4248

獲取access_token

https://www.douban.com/service/auth2/token
參數(shù)名稱參數(shù)說明
client_id必選參數(shù),應(yīng)用的唯一標(biāo)識(shí),對(duì)應(yīng)于APIKey
client_secret必選參數(shù),應(yīng)用的唯一標(biāo)識(shí),對(duì)應(yīng)于豆瓣secret
redirect_uri必選參數(shù),用戶授權(quán)完成后的回調(diào)地址,應(yīng)用需要通過此回調(diào)地址獲得用戶的授權(quán)結(jié)果。此地址必須與在應(yīng)用注冊(cè)時(shí)填寫的回調(diào)地址一致
grant_type必選參數(shù),此值可以為 authorization_code 或者 refresh_token 。在本流程中,此值為 authorization_code
code必選參數(shù),上一步中獲得的authorization_code

注意:此請(qǐng)求必須是HTTP POST方式

例如:

https://www.douban.com/service/auth2/token?  client_id=0b5405e19c58e4cc21fc11a4d50aae64&  client_secret=edfc4e395ef93375&  redirect_uri=https://www.example.com/back&  grant_type=authorization_code&  code=9b73a4248

返回結(jié)果:

{  "access_token":"a14afef0f66fcffce3e0fcd2e34f6ff4",  "expires_in":3920,  "refresh_token":"5d633d136b6d56a41829b73a424803ec",  "douban_user_id":"1221"}

使用access_token

curl "https://api.douban.com/v2/user/~me"     -H "Authorization: Bearer a14afef0f66fcffce3e0fcd2e34f6ff4"

access_token有效期 與 refresh_token

在OAuth2.0中,access_token不再長期有效。在授權(quán)獲取access_token時(shí)會(huì)一并返回其有效期,也就是返回值中的expires_in參數(shù)。

在access_token使用過程中,如果服務(wù)器返回106錯(cuò)誤:“access_token_has_expired ”,此時(shí),說明access_token已經(jīng)過期,除了通過再次引導(dǎo)用戶進(jìn)行授權(quán)來獲取access_token外,還可以通過refresh_token的方式來換取新的access_token和refresh_token。

通過refresh_token換取access_token的處理過程如下:

https://www.douban.com/service/auth2/token
參數(shù)名稱參數(shù)說明
client_id必選參數(shù),應(yīng)用的唯一標(biāo)識(shí),對(duì)應(yīng)于APIKey
client_secret必選參數(shù),應(yīng)用的唯一標(biāo)識(shí),對(duì)應(yīng)于豆瓣secret
redirect_uri必選參數(shù),用戶授權(quán)完成后的回調(diào)地址,應(yīng)用需要通過此回調(diào)地址獲得用戶的授權(quán)結(jié)果。此地址必須與在應(yīng)用注冊(cè)時(shí)填寫的回調(diào)地址一致
grant_type必選參數(shù),此值可以為 authorization_code 或者 refresh_token。在本流程中,此值為 refresh_token
refresh_token必選參數(shù),刷新令牌

注意:此請(qǐng)求必須是HTTP POST方式,refresh_token只有在access_token過期時(shí)才能使用,并且只能使用一次。當(dāng)換取到的access_token再次過期時(shí),使用新的refresh_token來換取access_token

例如:

https://www.douban.com/service/auth2/token?  client_id=0b5405e19c58e4cc21fc11a4d50aae64&  client_secret=edfc4e395ef93375&  redirect_uri=https://www.example.com/back&  grant_type=refresh_token&  refresh_token=5d633d136b6d56a41829b73a424803ec

返回結(jié)果:

{  "access_token":"0e63c03dfb66c4172b2b40b9f2344c45",  "expires_in":3920,  "refresh_token":"84406d40cc58e0ae8cc147c2650aa20a",  "douban_user_id":"1000"}
級(jí)別access_token有效期refresh_token有效期說明
L17天14天
L230天60天
L390天180天

需要授權(quán)的Api訪問速度控制

在用戶、應(yīng)用、服務(wù)器IP、scope等維度對(duì)接口的訪問速度進(jìn)行限制。

針對(duì)服務(wù)器IP:

級(jí)別限制
L15000次/小時(shí)
L210000次/小時(shí)
L320000次/小時(shí)

針對(duì)單用戶每應(yīng)用每scope:

級(jí)別限制
L1500次/小時(shí)
L21000次/小時(shí)
L32000次/小時(shí)

返回結(jié)果的header里會(huì)有當(dāng)前訪問限制信息:

Header名稱含義
X-Ratelimit-Limit單用戶每小時(shí)次數(shù)
X-RateLimit-Remaining單用戶每小時(shí)剩余次數(shù)
X-Ratelimit-Limit2單ip每小時(shí)次數(shù)
X-RateLimit-Remaining2單ip每小時(shí)剩余次數(shù)

錯(cuò)誤代碼

如果在API使用過程中,有錯(cuò)誤,則返回結(jié)果為:

{  "code":113,  "msg":"required_parameter_is_missing: client_id",  "request":"GET /shuo/statuses/232323"}
錯(cuò)誤代碼錯(cuò)誤說明
100invalid_request_scheme 錯(cuò)誤的請(qǐng)求協(xié)議
101invalid_request_method 錯(cuò)誤的請(qǐng)求方法
102access_token_is_missing 未找到access_token
103invalid_access_token access_token不存在或已被用戶刪除,或者用戶修改了密碼
104invalid_apikey apikey不存在或已刪除
105apikey_is_blocked apikey已被禁用
106access_token_has_expired access_token已過期
107invalid_request_uri 請(qǐng)求地址未注冊(cè)
108invalid_credencial1 用戶未授權(quán)訪問此數(shù)據(jù)
109invalid_credencial2 apikey未申請(qǐng)此權(quán)限
110not_trial_user 未注冊(cè)的測(cè)試用戶
111rate_limit_exceeded1 用戶訪問速度限制
112rate_limit_exceeded2 IP訪問速度限制
113required_parameter_is_missing 缺少參數(shù)
114unsupported_grant_type 錯(cuò)誤的grant_type
115unsupported_response_type 錯(cuò)誤的response_type
116client_secret_mismatch client_secret不匹配
117redirect_uri_mismatch redirect_uri不匹配
118invalid_authorization_code authorization_code不存在或已過期
119invalid_refresh_token refresh_token不存在或已過期
120username_password_mismatch 用戶名密碼不匹配
121invalid_user 用戶不存在或已刪除
122user_has_blocked 用戶已被屏蔽
123access_token_has_expired_since_password_changed 因用戶修改密碼而導(dǎo)致access_token過期
124access_token_has_not_expired access_token未過期
125invalid_request_scope 訪問的scope不合法,開發(fā)者不用太關(guān)注,一般不會(huì)出現(xiàn)該錯(cuò)誤
999unknown 未知錯(cuò)誤
HTTP狀態(tài)碼說明
200表明api的請(qǐng)求正常
400表明api的請(qǐng)求出錯(cuò),具體原因參考上面列出的錯(cuò)誤碼
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
淘寶開放平臺(tái)
第 87 天:Python Web開發(fā) OAuth2.0 簡介
Spring Cloud(6):保護(hù)微服務(wù)(Security)
Spring Cloud下OAUTH2注銷的實(shí)現(xiàn)
微信網(wǎng)頁第三方登錄原理
微信公眾平臺(tái)開發(fā)(71)OAuth2.0網(wǎng)頁授權(quán)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服