1. 程式人生 > >OAuth 2.0系列教程(八) 授權碼授權

OAuth 2.0系列教程(八) 授權碼授權

作者:Jakob Jenkov   譯者:林浩    校對:郭蕾

授權碼授權總共由2個請求和2個響應組成。一個授權請求+響應,和一個令牌請求+響應。 授權請求 授權請求被髮送到授權端點以獲取一個授權碼。這是請求中用到的引數:

response_type 必須。必須被設定到程式碼裡
client_id 必須。當客戶端被註冊時,授權伺服器要標識的客戶端。
redirect_uri 可選。通過客戶端註冊的重定向URI。
scope 可選。請求可能的作用域。
state 可選(推薦的)。任何需要被傳遞到客戶端請求的URI客戶端的狀態。

授權響應 授權響應包含了需要用來獲取訪問令牌的授權碼。這是響應包括的引數:

code 必須。授權碼
state 如果出現在請求中,必須包含。如果有的話,和客戶端請求中傳送的state引數一樣。

授權錯誤 如果授權期間發生錯誤,兩種情況會發生。 第一種情形是,客戶端沒有被授權或識別。比如,請求中錯誤的重定向URI。這種情況下,授權伺服器沒有必要重定向資源擁有者到重定向URI,而是通知資源擁有者發生了錯誤。 第二種情形是,客戶端被正確地授權了,但是其他某些事情失敗了。這種情況下下面地錯誤響應會被髮送到客戶端,包括在重定向URI中:

error 必須。必須是預先定義的錯誤碼之一。參見規範查查這些錯誤碼及它們的含義。
error_description 可選。一段UTF-8編碼的描述錯誤的文字。適用於開發者,而不是終端使用者。
error_uri 可選。 一個指向包含人類可讀的錯誤資訊網頁的URI。
state 必須。如果出現在授權請求期間,和請求中的state引數一樣。

令牌請求 一旦授權碼被獲取到了,客戶端可以用它獲取訪問令牌。這是訪問令牌請求引數:

grant_type 必須。必須被設定到授權碼中。
code 必須。被授權伺服器接收到的授權碼。
redirect_uri 必須。如果請求URI包括在授權請求中,之後必須是相同的。

令牌響應 訪問令牌請求的響應是包含訪問令牌及一些更多資訊的JSON字串:

{ "access_token
" : "...", "token_type" : "...", "expires_in" : "...", "refresh_token" : "...", }

access_type屬性是授權伺服器分配的訪問令牌。 token_type是被授權伺服器分配的令牌型別。 expires_in屬性是指訪問令牌過多少秒後,就不再有效。訪問令牌過期值是可選的。 refresh_token屬性包含令牌過期後重新整理的令牌。重新整理的令牌用於,一旦響應返回的不再有效時,包含一個新的訪問令牌。