天天看點

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

授權碼授權總共由2個請求和2個響應組成。一個授權請求+響應,和一個令牌請求+響應。 <b>授權請求</b> 授權請求被發送到授權端點以擷取一個授權碼。這是請求中用到的參數:

response_type

必須。必須被設定到代碼裡

client_id

必須。當用戶端被注冊時,授權伺服器要辨別的用戶端。

redirect_uri

可選。通過用戶端注冊的重定向uri。

scope

可選。請求可能的作用域。

state

可選(推薦的)。任何需要被傳遞到用戶端請求的uri用戶端的狀态。

<b>授權響應</b> 授權響應包含了需要用來擷取通路令牌的授權碼。這是響應包括的參數:

code

必須。授權碼

如果出現在請求中,必須包含。如果有的話,和用戶端請求中發送的state參數一樣。

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

error

必須。必須是預先定義的錯誤碼之一。參見規範查查這些錯誤碼及它們的含義。

error_description

可選。一段utf-8編碼的描述錯誤的文本。适用于開發者,而不是最終使用者。

error_uri

可選。 一個指向包含人類可讀的錯誤資訊網頁的uri。

必須。如果出現在授權請求期間,和請求中的state參數一樣。

<b>令牌請求</b> 一旦授權碼被擷取到了,用戶端可以用它擷取通路令牌。這是通路令牌請求參數:

grant_type

必須。必須被設定到授權碼中。

必須。被授權伺服器接收到的授權碼。

必須。如果請求uri包括在授權請求中,之後必須是相同的。

<b>令牌響應</b> 通路令牌請求的響應是包含通路令牌及一些更多資訊的json字元串:

access_type屬性是授權伺服器配置設定的通路令牌。 token_type是被授權伺服器配置設定的令牌類型。 expires_in屬性是指通路令牌過多少秒後,就不再有效。通路令牌過期值是可選的。 refresh_token屬性包含令牌過期後重新整理的令牌。重新整理的令牌用于,一旦響應傳回的不再有效時,包含一個新的通路令牌。