2015-09-28 3 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

Смежные вопросы