由於每一家不同的 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 的話,必須額外加上這個參數:
不過你必須注意,只有在你第一次發出授權請求的時候,從 Token Endpoint 得到的回應中才會看到 refresh_token
的資料。當你已經授權過了之後,預設並不會出現 Consent 頁面(也就是使用者授權的同意頁面),只要不會出現 Consent 頁面,最終的結果就不會再次出現 refresh_token
資料!
正常來說,我們並不需要每次授權都取得 Refresh Token,因為 Refresh Token 正常應該在第一次取得時就先保存下來,供日後刷新時使用。
但如果你真的一定要再次取得 Refresh Token 的話,那就要在 Auth Endpoint 呼叫時再加上一個參數:
如此一來就可以讓 Token Endpoint 回應時取得 refresh_token
資料!👍
Postman 的 Authorization 進階設定
新版的 Postman 提供了一個可以擴充 Auth Endpoint 呼叫時的參數,你可以參考下圖開啟 Authorization 的進階設定:
找到 Auth Request 區段,加入 access_type
=offline
與 prompt
=consent
這兩個參數即可:
相關連結