The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何讓 Google 的 OAuth 2.0 發出 Refresh Token

由於每一家不同的 OAuth 2.0 Provider 對於 Refresh Token 的核發方法都不盡相同,這篇文章我打算記錄一下 Google OAuth 2.0 發出 Refresh Token 的方法。

當我們進行 OAuth 2.0 的 Authorization Code Grant Type Flow 授權碼流程時,第一個步驟是將使用者導向到 Authorization Server 的 Auth Endpoint,預設你會需要以下參數:

  • response_type=code
  • client_id
  • state
  • scope
  • redirect_uri

如果要透過 Google OAuth 2.0 發出 Refresh Token 的話,必須額外加上這個參數:

  • access_type=offline

不過你必須注意,只有在你第一次發出授權請求的時候,從 Token Endpoint 得到的回應中才會看到 refresh_token 的資料。當你已經授權過了之後,預設並不會出現 Consent 頁面(也就是使用者授權的同意頁面),只要不會出現 Consent 頁面,最終的結果就不會再次出現 refresh_token 資料!

正常來說,我們並不需要每次授權都取得 Refresh Token,因為 Refresh Token 正常應該在第一次取得時就先保存下來,供日後刷新時使用。

但如果你真的一定要再次取得 Refresh Token 的話,那就要在 Auth Endpoint 呼叫時再加上一個參數:

  • prompt=consent

如此一來就可以讓 Token Endpoint 回應時取得 refresh_token 資料!👍

Postman 的 Authorization 進階設定

新版的 Postman 提供了一個可以擴充 Auth Endpoint 呼叫時的參數,你可以參考下圖開啟 Authorization 的進階設定:

Postman 的 Authorization 進階設定

找到 Auth Request 區段,加入 access_type=offlineprompt=consent 這兩個參數即可:

Auth Request

相關連結

留言評論