Dribbble API 文檔
概述(Overview)
-
概述(Overview)
- 架構(gòu)(Schema)
- 參數(shù)(Parameters)
- 客戶端錯(cuò)誤(Client Errors)
- HTTP動作(HTTP Verbs)
- 認(rèn)證(Authentication)
-
頁碼(Pagination)
- [鏈路報(bào)頭(Link Header)] (#鏈路報(bào)頭link-header)
-
限流(Rate Limiting)
- [保持限流(Staying within the rate limit)] (#保持限流staying-within-the-rate-limit)
- 條件請求(Conditional requests)
- 跨源資源共享(Cross Origin Resource Sharing)
- JSON-P回調(diào)(JSON-P Callbacks)
- 媒體類型(Media Types)
- 開放授權(quán)(OAuth)
請注意你必須注冊你的應(yīng)用并且在請求時(shí)使用OAuth認(rèn)證或使用你的API客戶端的access token進(jìn)行認(rèn)證追逮。在此之前庙洼,請務(wù)必仔細(xì)閱讀我們的條款及指引學(xué)習(xí)如何使用API漠另。
架構(gòu)(Schema)
所有的API訪問都是通過HTTPS,從api.dribbble.com/v1/
接口訪問。所有數(shù)據(jù)都是通過JSON發(fā)送和接收的兰怠。
$ curl -i https://api.dribbble.com/v1/users/simplebits
HTTP/1.1 200 OK
Date: Thu, 13 Feb 2014 19:30:30 GMT
ETag: "def2bc69c674e5b48cd281aa12c2c8e9"
Server: nginx
Status: 200 OK
Content-Type: application/json; charset=utf-8
Cache-Control: max-age=0, private, must-revalidate
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600
空字段包含為null
擦酌,而不是被省略。
所有的時(shí)間戳返回ISO-8601格式:
YYYY-MM-DDTHH:MM:SSZ
參數(shù)(Parameters)
許多API方法都有可選參數(shù)瞻赶。對于GET
請求而言,任何未被指定為一段路徑的參數(shù)可以作為一個(gè)HTTP查詢字符串參數(shù)傳遞:
$ curl -i "https://api.dribbble.com/v1/users/simplebits/followers?page=2"
在本例中派任,simplebits
的值是在路徑中給user
這個(gè)參數(shù)提供的砸逊,而page
的值是在查詢字符串中傳遞的。
對于POST
, PUT
, DELETE
請求, 未包含在URL中的參數(shù)應(yīng)使用JSON編碼掌逛,其Content-Type應(yīng)為application/x-www-form-urlencoded
师逸。
客戶端錯(cuò)誤(Client Errors)
在API調(diào)用接收請求主體時(shí)時(shí)有兩種類型的客戶端錯(cuò)誤。
1. 發(fā)送無效JSON豆混。
Status: 400 Bad Request
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
{
"message" : "解析JSON時(shí)出現(xiàn)問題."
}
2. 發(fā)送無效字段篓像。
Status: 422 Unprocessable Entity
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
{
"message" : "認(rèn)證失敗.",
"errors" : [
{
"attribute" : "主體",
"message" : "不能為空"
}
]
}
HTTP動作(HTTP Verbs)
如果可能的話,每次操作API盡量的使用恰當(dāng)?shù)腍TTP動作皿伺。
動作 | 描述 |
---|---|
GET | 用于接收資源员辩。 |
POST | 用于創(chuàng)造資源。 |
PUT | 用于更新資源鸵鸥,或進(jìn)行自定義操作奠滑。 |
DELETE | 用于刪除資源。 |
認(rèn)證(Authentication)
有兩種方式通過Dribbble API進(jìn)行身份驗(yàn)證妒穴。
OAuth2 Token (在報(bào)頭中發(fā)送)
$ curl -H "Authorization: Bearer OAUTH_TOKEN" https://api.dribbble.com/v1/user
OAuth2 Token (作為參數(shù)發(fā)送)
$ curl "https://api.dribbble.com/v1/user?access_token=OAUTH_TOKEN"
頁碼(Pagination)
返回多個(gè)項(xiàng)目的請求默認(rèn)將被分為每頁30項(xiàng)宋税。您可以使用page
參數(shù)規(guī)定更多頁面。對于一些資源宰翅,你還可以使用per_page
參數(shù)設(shè)置高達(dá)100的自定義頁面容量弃甥。請注意,由于技術(shù)原因汁讼,不是所有的接口都支持per_page
參數(shù)淆攻。
$ curl "https://api.dribbble.com/v1/user/followers?page=2&per_page=100"
注意阔墩,省略page
參數(shù)將返回第一頁。
鏈路報(bào)頭(Link Header)
頁碼信息包含在鏈路報(bào)頭中瓶珊⌒ン铮可能某些其它資源不根據(jù)頁面數(shù)量進(jìn)行分頁,重要的是按照這些Link Header的值來定伞芹,而不是自己構(gòu)建URL忘苛。例如,請求第二頁時(shí)唱较,可以提供以下報(bào)頭:
Link: <https://api.dribbble.com/v1/user/followers?page=1&per_page=100>; rel="prev",
<https://api.dribbble.com/v1/user/followers?page=3&per_page=100>; rel="next"
rel
的值可能是:
Name | Description |
---|---|
next | 顯示結(jié)果直屬的下一個(gè)頁面的URL扎唾。 |
prev | 顯示結(jié)果直屬的上一個(gè)頁面的URL。 |
限流(Rate Limiting)
對于使用OAuth登陸的請求南缓,您可以設(shè)置已認(rèn)證的用戶最高每分鐘60次胸遇,每人每天1,440次。對于使用你應(yīng)用程序的客戶端訪問令牌(Client Access Token)那些未經(jīng)授權(quán)的請求汉形,你可以設(shè)置最高每分鐘60次纸镊,每天10,000次。
你可以檢查任一API請求返回的HTTP報(bào)頭來查看當(dāng)前每分鐘限流的狀態(tài):
$ curl -i https://api.dribbble.com/v1/users/simplebits
HTTP/1.1 200 OK
Status: 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600
The headers tell you everything you need to know about your current rate limit status:
Header Name | Description |
---|---|
X-RateLimit-Limit | 允許該客戶每分鐘發(fā)出請求的最大數(shù)目概疆。 |
X-RateLimit-Remaining | 當(dāng)前限流窗口的剩余請求數(shù)量逗威。 |
X-RateLimit-Reset | 當(dāng)前限流窗口的重置時(shí)間。從UTC紀(jì)元開始岔冀。(1970-01-01 00:00:00 UTC) |
如果你需要時(shí)間顯示為不同的格式凯旭,任何現(xiàn)代編程語言可以都完成這項(xiàng)工作。例如使套,如果您在您的網(wǎng)頁瀏覽器中打開控制臺尽纽,就可以輕松將時(shí)間重置為一個(gè)JavaScript Date對象。
new Date(1392321600 * 1000)
// => Thu Feb 13 2014 14:00:00 GMT-0600 (CST)
一旦你超出限流童漩,你會收到一個(gè)錯(cuò)誤響應(yīng):
HTTP/1.1 429 Too Many Requests
Status: 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1392321600
{ "message" : "API rate limit exceeded." }
保持限流(Staying within the rate limit)
如果你超出你的限流上限,你可以通過緩存API的響應(yīng)來解決問題春锋。如果你已經(jīng)緩存矫膨,但仍然超出你的限流上限,請與我們聯(lián)系期奔,來為您的OAuth應(yīng)用申請更高的限流上限侧馅。
條件請求(Conditional requests)
大多數(shù)響應(yīng)都返回ETag
報(bào)頭。許多響應(yīng)也會返回一個(gè)Last-Modified
報(bào)頭呐萌。你可以使用這些報(bào)頭值(Header Value)來讓使用了If-None-Match
和If-Modified-Since
報(bào)頭的后續(xù)請求去請求這些資源馁痴。如果資源沒有改變,服務(wù)器將返回一個(gè)304 Not Modified
肺孤。
$ curl -i https://api.dribbble.com/v1/users/simplebits
HTTP/1.1 200 OK
ETag: "e612e16d3c4d113573edb015d8eac1d5"
Status: 200 OK
Last-Modified: Sat, 22 Feb 2014 17:10:33 GMT
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600
$ curl -i https://api.dribbble.com/v1/users/simplebits -H 'If-None-Match: "e612e16d3c4d113573edb015d8eac1d5"'
HTTP/1.1 304 Not Modified
ETag: "e612e16d3c4d113573edb015d8eac1d5"
Status: 200 OK
Last-Modified: Sat, 22 Feb 2014 17:10:33 GMT
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600
$ curl -i https://api.dribbble.com/v1/users/simplebits -H "If-Modified-Since: Sat, 22 Feb 2014 17:10:33 GMT"
HTTP/1.1 304 Not Modified
ETag: "e612e16d3c4d113573edb015d8eac1d5"
Status: 200 OK
Last-Modified: Sat, 22 Feb 2014 17:10:33 GMT
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600
跨源資源共享(Cross Origin Resource Sharing)
本API對Ajax請求支持跨資源共享(CORS)罗晕。你可以閱讀 CORS W3C working draft, 或者HTML5安全指南的 這個(gè)簡介济欢。
下面是從瀏覽器點(diǎn)擊http://example.com
發(fā)送請求的示例:
$ curl -i https://api.dribbble.com/v1/users/simplebits -H "Origin: http://example.com"
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://example.com
Access-Control-Expose-Headers: ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Access-Control-Allow-Credentials: true
CORS的預(yù)請求(preflight request)看起來是這樣的:
$ curl -i https://api.dribbble.com/v1/users/simplebits -X OPTIONS -H "Origin: http://example.com" -H "Access-Control-Request-Method: GET"
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Methods: OPTIONS, GET
Access-Control-Expose-Headers: ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Access-Control-Max-Age: 86400
Access-Control-Allow-Credentials: true
JSON-P回調(diào)(JSON-P Callbacks)
擴(kuò)展閱讀: JSON-Pwikipedia
你可以發(fā)送一個(gè)回調(diào)參數(shù)給任何GET調(diào)用來獲得包裹在一個(gè)JSON函數(shù)的結(jié)果。這通常是瀏覽器避過跨域問題想要在網(wǎng)頁中嵌入內(nèi)容時(shí)被使用的小渊。響應(yīng)包括和常規(guī)API相同的數(shù)據(jù)輸出法褥,外加HTTP頭的相關(guān)信息。
$ curl "https://api.dribbble.com?callback=bar"
bar({
"meta" : {
"status" : 200,
"X-RateLimit-Limit" : 60,
"X-RateLimit-Remaining" : 59,
"X-RateLimit-Reset" : 1392321600,
"Link" : [
["https://api.dribbble.com?page=2", { "rel" : "next" }]
]
},
"data" : {
// ...
}
})
你可以寫一個(gè)JavaScript處理程序來處理這樣的回調(diào):
function bar(response) {
var meta = response.meta
var data = response.data
console.log(meta)
console.log(data)
}
HTTP報(bào)頭中所有的頭(header)都是字符串類型酬屉,只有一個(gè)值得注意的例外:鏈路(Link)半等。鏈路報(bào)頭(Link Header)為你預(yù)解析為[url, options]
元組數(shù)組。
一個(gè)看起來像這樣的鏈接:
Link: <url1>; rel="next", <url2>; rel="foo"; bar="baz"
… 它的回調(diào)輸出看起來是這樣的:
{
"Link" : [
[
"url1",
{
"rel" : "next"
}
],
[
"url2",
{
"rel" : "foo",
"bar" : "baz"
}
]
]
}
媒體類型(Media Types)
自定義媒體類型用來讓消費(fèi)者在API中選擇他們希望收到的數(shù)據(jù)格式呐萨。當(dāng)你發(fā)起請求杀饵,這是根據(jù)向Accept
報(bào)頭添加下列任一類型來完成的。資源對媒體類型處理得很特別谬擦,能夠獨(dú)立地改變和支持他們的格式切距,對其他的資源則不這樣。
當(dāng)前版本支持且只支持v1
怯屉,但未來可能會改變蔚舀。所有Dribbble的媒體類型看起來是這樣的:
application/vnd.dribbble.v1.param+json
評論正文屬性(Comment Body Property)
評論正文可使用HTML編寫,例如鏈接锨络,并可以包含自動鏈接(auto-linked)的URL和用戶名提及(username mentions)赌躺。
HTML
返回HTML從包含了自動鏈接(auto-linked)的URL和用戶名提及(username mentions)的正文呈現(xiàn)∠鄱回應(yīng)將包含一個(gè)body
屬性礼患。如果你沒傳過任何特定的媒體類型,這就是默認(rèn)值掠归。
application/vnd.dribbble.v1.html+json
Text
當(dāng)用戶正在編輯評論時(shí)缅叠,返回一個(gè)顯示在文本區(qū)域、大多是文本形式的正文虏冻。它就可能包含一些用戶自己寫的HTML代碼肤粱,但自動鏈接(auto-linked)或提及(mentions)鏈接將被不包括在內(nèi)。響應(yīng)將包括一個(gè)body_text
屬性厨相。
application/vnd.dribbble.v1.text+json
快照描述屬性(Shot Description Property)
我不知道怎么翻譯
Shot
领曼,可能是“快照”。
快照描述可使用HTML編寫蛮穿,比如鏈接庶骄,并可以包括自動鏈接(auto-linked)的URL和用戶名提及(username mentions)。該屬性和評論正文屬性除了名稱其它都是一樣的践磅。
HTML
返回HTML從包含了自動鏈接(auto-linked)的URL和用戶名提及(username mentions)的描述呈現(xiàn)单刁。回應(yīng)將包含一個(gè)description
屬性府适。如果你沒傳過任何特定的媒體類型羔飞,這就是默認(rèn)值肺樟。
application/vnd.dribbble.v1.html+json
Text
當(dāng)用戶正在編輯描述時(shí),返回一個(gè)顯示在文本區(qū)域褥傍、大多是文本形式的描述儡嘶。它就可能包含一些用戶自己寫的HTML代碼,但自動鏈接(auto-linked)或提及(mentions)鏈接將被不包括在內(nèi)恍风。響應(yīng)將包括一個(gè)description_text
屬性蹦狂。
application/vnd.dribbble.v1.text+json
開放授權(quán)(OAuth)
- 概述(Overview)
- 媒體類型(Media Types)
- 開放授權(quán)(OAuth)
OAuth2是一種協(xié)議,允許外部應(yīng)用請求授權(quán)獲得用戶在Dribbble帳戶內(nèi)除密碼外的私人信息朋贬。這比基本認(rèn)證更優(yōu)秀凯楔,因?yàn)榱钆瓶梢员幌拗茷樘囟愋偷臄?shù)據(jù),并且用戶可以隨時(shí)撤銷它锦募。
所有開發(fā)者需要在開始之前注冊他們的應(yīng)用摆屯。已注冊的OAuth的應(yīng)用分配一個(gè)唯一的客戶端ID(clientID)和客戶端密鑰(client secret)。不要向別人分享你的客戶端密鑰(client secret)糠亩。
Web應(yīng)用流(Web Application Flow)
1. 重定向用戶請求訪問Dribbble
GET https://dribbble.com/oauth/authorize
參數(shù)
Name | Type | Description |
---|---|---|
client_id | string | 必須虐骑。 你注冊時(shí)即可獲得一個(gè)客戶端ID。 |
redirect_uri | string | 用戶授權(quán)之后會轉(zhuǎn)到這個(gè)URL赎线。 詳情請見: 重定向URL廷没。 |
scope | string | 使用空格進(jìn)行分隔的域列表。如果沒有提供垂寥,域默認(rèn)為向那些不具有有效應(yīng)用令牌的用戶提供公開域颠黎。對于已經(jīng)擁有該應(yīng)用有效令牌的用戶,用戶將不會顯示帶有域列表的授權(quán)頁面滞项。取而代之的是狭归,流(flow)這步驟將自動和該被用戶在用戶最后一次完成的流(flow)的同一個(gè)的域內(nèi)完成。 |
state | string | 一個(gè)難以猜測的隨機(jī)字符串文判。用于防止跨站請求偽造攻擊过椎。 |
2. Dribbble重定向回你的網(wǎng)站
Dribbble重定向回您的網(wǎng)站在code
參數(shù)臨時(shí)代碼,以及你在上一步中state
參數(shù)中提供的狀態(tài)戏仓。如果狀態(tài)不匹配潭流,則已經(jīng)由第三方和進(jìn)程創(chuàng)建的請求應(yīng)該被中止。
交換(Exchange)這個(gè)來獲取訪問令牌:
POST https://dribbble.com/oauth/token
參數(shù)
Name | Type | Description |
---|---|---|
client_id | string | 必須柜去。 你注冊時(shí)即可獲得一個(gè)客戶端ID。 |
client_secret | string | 必須拆宛。 你注冊時(shí)即可獲得一個(gè)客戶端密鑰嗓奢。 |
code | string | 必須。 你在第1步的響應(yīng)里會獲得code浑厚。 |
redirect_uri | string | 用戶授權(quán)之后會轉(zhuǎn)到這個(gè)URL股耽。 詳情請見: 重定向URL根盒。 |
響應(yīng)
響應(yīng)將返回為以下格式的JSON:
{
"access_token" : "29ed478ab86c07f1c069b1af76088f7431396b7c4a2523d06911345da82224a0",
"token_type" : "bearer",
"scope" : "public write"
}
3. 用訪問令牌來訪問API
訪問令牌允許您代表用戶請求API。
GET https://api.dribbble.com/v1/user?access_token=...
你可以傳遞如上所示的令牌中的查詢參數(shù)物蝙,但更干凈的做法是將其包含在Authorization標(biāo)頭中:
Authorization: Bearer ACCESS_TOKEN
舉個(gè)栗子炎滞,在curl
中你可以像這樣設(shè)置Authorization標(biāo)頭:
curl -H "Authorization: Bearer ACCESS_TOKEN" https://api.dribbble.com/v1/user
客戶端流(Client Flow)
應(yīng)用提供了可用于對一個(gè)服務(wù)器實(shí)現(xiàn)或公共JavaScript客戶端的只讀訪問令牌。請注意诬乞,訪問令牌依然受制于限流册赛。
和使用Web訪問令牌一樣使用本訪問令牌。
非Web應(yīng)用流(Non-Web Application Flow)
我們目前不支持OAuth的以外的任何其他身份驗(yàn)證方法震嫉。如果你只需要只讀訪問的話森瘪,試試客戶端流。
重定向URL(Redirect URLs)
此redirect_uri
是可選參數(shù)票堵。如果忽略該參數(shù)扼睬,Dribbble將用戶重定向到在OAuth應(yīng)用設(shè)置中配置的回調(diào)URL。如果提供該參數(shù)悴势,重定向URL的主機(jī)和端口必須與回調(diào)URL相匹配窗宇。重定向URL路徑必須引用回調(diào)URL的子目錄。
CALLBACK: http://example.com/path
GOOD: http://example.com/path
GOOD: http://example.com/path/subdir/other
GOOD: myapplication://phone-callback
BAD: http://example.com/
BAD: http://example.com/bar
BAD: http://example.com:8080/path
BAD: http://oauth.example.com:8080/path
BAD: http://example.org
BAD: ssh://example.com
域(Scopes)
作用域讓你指定正是你需要什么類型的訪問特纤。范圍限制的OAuth令牌訪問军俊。他們不授予超出其用戶已經(jīng)有任何額外的許可。
對于Web流叫潦,請求作用域?qū)⒈伙@示到用戶的授權(quán)表單上蝇完。
Name | Description |
---|---|
public | 授予只讀公共信息訪問。如果沒提供域矗蕊,這就是默認(rèn)域短蜕。
|
write | 授予用戶資源的寫權(quán)限,除評論(comment)和快照(shot)傻咖。 |
comment | 授予創(chuàng)建朋魔,更新和刪除評論的完全訪問權(quán)限。 |
upload | 授予創(chuàng)建卿操,更新和刪除照片和附件的完全訪問權(quán)限警检。 |
您的應(yīng)用可以在初始重定向中請求域(scopes)。您可以用空格分隔它們來指定多個(gè)域:
https://dribbble.com/oauth/authorize?
client_id=...&
scope=public+write
認(rèn)證請求常見錯(cuò)誤(Common errors for the authorization request)
有幾件事情會在為用戶獲取OAuth令牌的過程中可能會出錯(cuò)害淤。在初始授權(quán)請求階段扇雕,這些都是一些你可能會看到錯(cuò)誤:
應(yīng)用掛起(Application Suspended)
如果你設(shè)置的OAuth應(yīng)用被掛起(由于濫用匯報(bào),垃圾郵件或API的不當(dāng)使用)窥摄,Dribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:
http://your-application.com/callback?error=application_suspended
&error_description=Your+application+has+been+suspended.
&state=xyz
請聯(lián)系技術(shù)支持來解決被掛起的應(yīng)用的問題镶奉。
重定向URI不匹配(Redirect URI Mismatch)1
如果你提供了一個(gè)和你的應(yīng)用注冊不匹配的redirect_uri
,Dribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:
http://your-application.com/callback?error=invalid_redirect_uri
&error_description=The+redirect+uri+included+is+not+valid.
&state=xyz
要糾正這個(gè)錯(cuò)誤,要么提供一個(gè)與你注冊過的相匹配的redirect_uri
哨苛,要么略去這個(gè)參數(shù)來使用你的應(yīng)用程序注冊的默認(rèn)值鸽凶。
拒絕訪問(Access Denied)
如果用戶拒絕訪問你的應(yīng)用,ribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:
http://your-application.com/callback?error=access_denied
&error_description=The+resource+owner+or+authorization+server+denied+the+request.
&state=xyz
你除了嗶狗你什么都干不了建峭,因?yàn)橛脩?del>就是爹用不用你的應(yīng)用是他的自由玻侥。通常情況下,用戶就是要關(guān)閉窗口或按自己的瀏覽器的后退鍵怎么著啊你打我啊亿蒸,所以看起來你可能永遠(yuǎn)都看不到這個(gè)錯(cuò)誤凑兰。
訪問令牌請求常見錯(cuò)誤(Common errors for the access token request)
在一個(gè)交換訪問令牌代碼的第二階段,還有另外一組可能出現(xiàn)的錯(cuò)誤祝懂。
不正確的客戶端憑證(Incorrect Client Credentials)
如果client_id
和/或client_secret
傳遞不正確票摇,您將收到此錯(cuò)誤響應(yīng)。
{
"error" : "invalid_client",
"error_description" : "Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method."
}
為了解決這個(gè)錯(cuò)誤砚蓬,回溯并確保你有你的OAuth應(yīng)用正確的憑證矢门。仔細(xì)檢查client_id
和client_secret
以確保它們是正確的,并且被正確的傳遞到Dribbble灰蛙。
重定向URI不匹配(Redirect URI Mismatch)2
如果你提供了一個(gè)和你的應(yīng)用注冊不匹配的redirect_uri
祟剔,Dribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:
{
"error" : "invalid_grant",
"error_description" : "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}
要糾正這個(gè)錯(cuò)誤,要么提供一個(gè)與你注冊過的相匹配的redirect_uri
摩梧,要么略去這個(gè)參數(shù)來使用你的應(yīng)用程序注冊的默認(rèn)值物延。
錯(cuò)誤的驗(yàn)證碼(Bad Verification Code)
如果你傳的驗(yàn)證碼不正確、過期了或不匹配你在身份驗(yàn)證請求的第一階段獲得的驗(yàn)證碼仅父,您將會收到此錯(cuò)誤叛薯。
{
"error" : "invalid_grant",
"error_description" : "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}
為了解決這個(gè)錯(cuò)誤,重新開始OAuth流程來得到一個(gè)新的代碼笙纤。