http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8Ephp
微博開放接口的調用,如發微博、關注等,都是須要獲取用戶身份認證的。android
目前微博開放平臺用戶身份鑑權主要採用的是OAuth2.0。ios
另外,爲了方便開發者開發、測試本身的應用,咱們還提供了Basic Auth的身份鑑權方式,但Basic Auth僅適用於應用所屬的開發者本身調用接口。git
OAuth2.0較1.0相比,整個受權驗證流程更簡單更安全,也是將來最主要的用戶身份驗證和受權方式。github
關於OAuth2.0協議的受權流程能夠參考下面的流程圖,其中Client指第三方應用,Resource Owner指用戶,Authorization Server是咱們的受權服務器,Resource Server是API服務器。web
開發者能夠先瀏覽OAuth2.0的接口文檔,熟悉OAuth2.0的接口及參數的含義,而後咱們根據應用場景各自說明如何使用OAuth2.0。api
新版受權頁改變了以前頁面信息元素過多,對用戶使用帶來干擾的問題,登陸和受權這兩個行爲已在新版中分離,用戶可以更好地理解賬號登陸和受權的過程,也爲將來更多的功能帶來承載空間。安全
當前一個最完整的受權分爲三個步驟:登陸-普通受權-高級受權(SCOPE)。但這三個步驟並非必然出現,當用戶的微博處於登陸狀態時,頁面會自動跳轉到普通受權頁,「高級受權」一樣也不是必須,若是開發者不申請SCOPE權限,系統會自動跳過此步驟,回調應用。咱們在灰度測試中統計發現,只要合理的使用高級受權,開發者徹底沒必要擔憂增長操做所帶來的頁面流失率問題,相反,一個清晰的受權體驗更能獲取用戶的信任。服務器
與此同時,受權項將會變的更加有條理,以前的普通權限將做爲基礎服務,用戶再也不有感知,與用戶隱私相關的會歸到高級受權,用戶在受權時有權利逐條取消,進一步加強了隱私控制。app
開發者須要根據各自的應用場景,選擇適用的OAuth2.0受權流程:
下載Android SDK | 下載iOS SDK | 下載WP7 SDK |
下載PHP SDK(由SAE維護) | 下載Java SDK | 下載Python SDK |
下載Flash SDK | 下載Javascript SDK | 下載C# SDK |
Android SDK 說明文檔 | iOS SDK 說明文檔 | WP7 SDK 說明文檔 |
OAuth是一種國際通用的受權方式, OAuth2.0的官方技術說明可參看 http://oauth.net/2/
若是你仍在使用Oauth1.0,請進入瀏覽相關文檔。
微博OAuth2.0實現中,受權服務器在接收到驗證受權請求時,會按照OAuth2.0協議對本請求的請求頭部、請求參數進行檢驗,若請求不合法或驗證未經過,受權服務器會返回相應的錯誤信息,包含如下幾個參數:
錯誤信息的返回方式有兩種:
1. 當請求受權Endpoint:https://api.weibo.com/2/oauth2/authorize 時出現錯誤,返回方式是:跳轉到redirect_uri,並在uri 的query parameter中附帶錯誤的描述信息。
2. 當請求access token endpoing:https://api.weibo.com/oauth2/access_token 時出現錯誤,返回方式:返回JSON文本。例如:
1
2
3
4
5
|
{
"error"
:
"unsupported_response_type"
,
"error_code"
: 21329,
"error_description"
:
"不支持的ResponseType."
}
|
OAuth2.0錯誤響應中的錯誤碼定義以下表所示:
錯誤碼(error) | 錯誤編號(error_code) | 錯誤描述(error_description) |
---|---|---|
redirect_uri_mismatch | 21322 | 重定向地址不匹配 |
invalid_request | 21323 | 請求不合法 |
invalid_client | 21324 | client_id或client_secret參數無效 |
invalid_grant | 21325 | 提供的Access Grant是無效的、過時的或已撤銷的 |
unauthorized_client | 21326 | 客戶端沒有權限 |
expired_token | 21327 | token過時 |
unsupported_grant_type | 21328 | 不支持的 GrantType |
unsupported_response_type | 21329 | 不支持的 ResponseType |
access_denied | 21330 | 用戶或受權服務器拒絕授予數據訪問權限 |
temporarily_unavailable | 21331 | 服務暫時沒法訪問 |
appkey permission denied | 21337 | 應用權限不足 |
OAuth2.0相關問題,查看 OAuth2.0相關問題