1

我試圖從谷歌的認證服務器得到refresh token用於谷歌分析API在服務器端的認證與Service Account Credential使用官方Google PHP client libraryPHP谷歌分析服務器到服務器OAuth得到刷新令牌

我能創造一個access token和使用,但目前我創建了一個用戶進入頁面新的令牌每一次。我想減少流量並獲取刷新令牌將其傳遞給我的JavaScript函數。

gapi.analytics.auth.authorize({ 
    serverAuth: { 
     access_token: accessToken <-refresh token is that even possible? 
    } 
}); 

我當前的PHP代碼:

$client = new \Google_Client(); 
$client->setApplicationName("Craft CMS Plugin"); 
$client->setAuthConfig($credentialPath); 
$client->setAccessType('offline'); 
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); 

$client->refreshTokenWithAssertion(); 

$this->analyticsAccount = new \Google_Service_Analytics($client); 
$token = $client->getAccessToken(); 
$accessToken = $token['access_token']; 

但沒有refresh_token。我可以var_dump的一切,但我只找到訪問令牌。我已經試過這個Refresh Token for Google Api Php Client但它沒有工作。

你能幫我嗎?我怎樣才能得到一個。 非常感謝

回答

1
  1. 服務帳戶的工作方式與Oauth2不同。他們沒有刷新令牌。
  2. JavaScript沒有使用刷新令牌的權力。
  3. 你爲什麼有關交通服務帳戶應只請求身份驗證時,它需要它的一個小時曾經擔心。就交通而言,我認爲這是次要的。

如果服務帳戶正在工作,請回答您想要執行的操作。

+0

非常感謝你,所以我會保存我的訪問令牌和使用的那一個。您能否告訴我是否有更好的方法來檢查令牌是否比比較時間有效?我會將我的令牌+當前時間存儲在我的數據庫中,並檢查3600s是否已過。對不起,如果這是一個愚蠢的問題,但我對這個 –

+0

相對較新,你不應該是客戶端庫爲你照顧。 – DaImTo

+0

你是什麼意思?我必須檢查訪問令牌是否仍然有效,如果我從數據庫中獲取它,然後再將其發送到我的JavaScript函數。如果我不這樣做會有錯誤。 –

相關問題