使用Google API 用戶端刷新令牌
在使用Google Analytics API (V3) 時,使用者可能會遇到錯誤,特別是在嘗試檢索時來自測試帳戶以外的帳戶的資料。此問題通常表現為 403 錯誤。另外,即使撤銷並重新驗證令牌後,問題也可能會在令牌過期時重新出現。
為了解決這個問題,解決方案是利用refreshToken方法來取得新的驗證令牌。但是,執行 $client->refreshToken(refresh_token_key) 可能會產生無效授予錯誤訊息(“error”:“invalid_grant”)。
在研究refreshToken方法背後的程式碼後,很明顯以下內容參數已正確發送:
$client = new apiClient(); $client->setClientId($config['oauth2_client_id']); $client->setClientSecret($config['oauth2_client_secret']); $client->setRedirectUri($config['oauth2_redirect_uri']); $client->setScopes('https://www.googleapis.com/auth/analytics.readonly'); $client->setState('offline'); $client->setAccessToken($config['token']); // The access JSON object. $client->refreshToken($config['refreshToken']); // Will return error here解決問題的關鍵是理解身份驗證時獲得的初始令牌擁有刷新令牌。雖然初始令牌會在一小時內過期,但可以利用刷新令牌來取得新令牌。但是,請務必注意,此臨時令牌也會在一小時後過期,並且沒有關聯的刷新令牌。因此,要檢索新的臨時令牌,必須使用初始令牌的刷新令牌。 為了清楚起見,以下程式碼提供了詳細說明:
以上是使用 Google Analytics API 刷新令牌時如何解決「invalid_grant」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!