0

На моем веб-сайте у меня есть кнопка для загрузки файлов на Google Drive с помощью api.обновить токен с клиентом google api не работает

Вот мой код:

$auth_code  = GOOGLEDRIVE_AUTH_CODE; 
$access_token = GOOGLEDRIVE_ACCESS_TOKEN; 
$refresh_token = GOOGLEDRIVE_REFRESH_TOKEN; 
$client_id  = 'Google_App_Client_ID'; 
$client_secret = 'Google_App_Client_Secret'; 
$redirect_uri = 'Redirct_Url'; 

$client = new Google_Client(); 
$client->setClientId($client_id); 
$client->setClientSecret($client_secret); 
$client->setRedirectUri($redirect_uri); 
$client->setAccessType('offline'); 
$client->setApprovalPrompt('force'); 
$client->addScope("https://www.googleapis.com/auth/drive"); 
$service = new Google_Service_Drive($client); 

if (isset($access_token) && $access_token) { 
    $client->setAccessToken($access_token); 
    if ($client->isAccessTokenExpired()) { 
     $refresh_token = $client->getRefreshToken(); 
     $client->refreshToken($refresh_token); 
     $access_token = $client->getAccessToken(); 
     $co->save('GDRIVE_ACCESS_TOKEN',$access_token); 
     $co->save('GDRIVE_REFRESH_TOKEN',$refresh_token); 
    } 
} else { 
    $authUrl = $client->createAuthUrl(); 
} 

эта линия выдает ошибку

$client->refreshToken($refresh_token); 

"Ошибка при обновлении маркеров OAuth2, сообщение: { "Ошибка": "invalid_grant"}"

Чтение сообщения об ошибке похоже на то, что обновление токена не работает внезапно. Как я уже сказал, этот инструмент загрузки работает отлично в течение нескольких месяцев.

Любая идея?

Спасибо, часы Midhun

ответ

0

Invalid_grant

  1. ваш сервер не находится в синхронизации с NTP. (Решение: проверьте время сервера, если его неправильно исправить.)

Если это не так, нет никаких проблем, кроме того, чтобы попросить пользователя снова пройти аутентификацию. Возможные причины обновления токена обновления.

  1. Пользователь аннулировал ваш доступ.
  2. токен обновления не использовался в течение шести месяцев, чтобы запросить новый токен доступа.
  3. Превышение предела токена обновления. Приложения могут запрашивать несколько токенов обновления. Например, это полезно в ситуациях, когда пользователь хочет установить приложение на нескольких машинах. В этом случае требуются два токена обновления, по одному для каждой установки. Когда количество токенов обновления превышает предел, старшие токены становятся недействительными. Если приложение пытается использовать недействительный токен обновления, возвращается ответ об ошибке invalid_grant. Предел для каждой уникальной пары клиента OAuth 2.0 и 25 обновленных токенов (обратите внимание, что этот предел может быть изменен). Если приложение продолжает запрашивать токены обновления для одной и той же пары Client/Account, после того, как будет выпущен 26-й токен, первый токен обновления, который был ранее выпущен, станет недействительным. 27-й запрошенный токен обновления приведет к недействительности второго ранее выпущенного токена и так далее.

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

  • Нет связанных вопросов^_^