0

私のウェブサイトには、アップロードファイル用のアップロードボタンがあり、api経由でGoogleドライブにアップロードしています。ここで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. リフレッシュトークンは、新しいアクセストークンを要求するために6か月間使用されていません。
  3. リフレッシュトークンの制限を超えました。アプリケーションは、複数のリフレッシュトークンを要求できます。たとえば、複数のマシンにアプリケーションをインストールする場合に便利です。この場合、インストールごとに1つずつ、2つのリフレッシュトークンが必要です。リフレッシュトークンの数が制限を超えると、古いトークンが無効になります。アプリケーションが無効化されたリフレッシュトークンを使用しようとすると、invalid_grantエラー応答が返されます。 OAuth 2.0クライアントのそれぞれのユニークなペアの制限であり、リフレッシュトークンは25です(この制限は変更される可能性があります)。アプリケーションが同じクライアント/アカウントのペアのリフレッシュトークンを要求し続けると、26番目のトークンが発行されると、以前に発行された最初のリフレッシュトークンは無効になります。 27番目に要求されたリフレッシュトークンは、以前に発行された2番目のトークンなどを無効にします。
関連する問題