2015-09-28 143 views
1

我試圖在他過期後得到一個新的access_token。我已經在銀行存的回報,我收到信息的第一客戶端訪問:Google API - 刷新令牌

{"access_token": "TOKEN", "refresh_token": "TOKEN", "token_type", "Bearer", "expires_in": 3600, "created ": 1320790426}

之後令牌到期我需要申請一個新的,我做的是這樣的:

$client = new Google_Client(); 
$client->setApplicationName(APPLICATION_NAME); 
$client->setScopes(SCOPES); 
$client->setAuthConfigFile(CLIENT_SECRET_PATH); 
$client->setAccessType('offline'); 

$token['access_token'] = $db->dados[0]['use_access_token']; 
$token['refresh_token'] = $db->dados[0]['use_refresh_token']; 
$token['token_type'] = $db->dados[0]['use_token_type']; 
$token['expires_in'] = $db->dados[0]['use_expires_in']; 
$token['created']  = $db->dados[0]['use_created']; 

$client->setAccessToken(json_encode($token)); 

if ($client->isAccessTokenExpired()) { 
    echo "Expired !"; 
    $client->refreshToken($client->getRefreshToken()); 
    //$accessToken = $client->authenticate($authCode); 
} else { 
    ... 
} 

問題是,總是返回此錯誤: 錯誤刷新的OAuth2令牌,消息:

{ "error" : "invalid_grant" }

+0

如何迪d獲取,提取並將刷新標記存儲在數據庫中(即您通過$ db-> dados [0] ['use_refresh_token']'檢索的值;你可能想要粘貼該代碼以及 –

回答

0
$client->refreshToken($refreshToken); 
    $newtoken=$client->getAccessToken(); 
    echo $newtoken."</br>"; 
+0

錯誤仍然發生,但感謝您的答覆 – CESD

+0

您是否傳入整個$ token數組或只是refresh_token? –

+0

只是refresh_token – CESD