ホームページ >バックエンド開発 >PHPチュートリアル >「invalid_grant」エラーを回避するために Google API クライアント アクセス トークンを効率的に更新する方法
問題の理解
Google Analytics API を使用すると、エラーが発生する場合があります複数の Google アカウントのデータにアクセスしようとしたとき。この問題は、アクセス トークンが 1 時間後に期限切れになるために発生します。 $client->refreshToken() を使用してトークンを更新すると問題は解決しますが、場合によっては「invalid_grant」エラーが返されることがあります。
解決策
トークンを正しく更新するには、次のことを理解する必要があります。以下:
コードの実装
添付のコードは、トークンを管理するためのソリューションを示しています。 Expiration:
// Retrieve the original token. $originalToken = json_decode($token); // Calculate token expiration time. $now = time(); $expirationTime = $originalToken->created + 3600; // Check if token is expired. if ($now > $expirationTime) { // If expired, use the refresh token from the original token to obtain a new temporary token. $client->refreshToken($originalToken->refresh_token); $newToken = $client->getAccessToken(); $tokenQuery = "UPDATE token SET token='$newToken' WHERE type='refresh'"; mysqli_query($cxn, $tokenQuery); $token = $newToken; } else { // If the original token hasn't expired, set the token as the original token. $client->setAccessToken($token); }
このコードは、元のトークンを取得し、その有効期限を計算し、有効期限が切れているかどうかを確認します。存在する場合、リフレッシュ トークンを使用してトークンをリフレッシュし、データベースを更新します。元のトークンの有効期限が切れていない場合は、クライアントのアクセス トークンを元のトークンとして設定します。
以上が「invalid_grant」エラーを回避するために Google API クライアント アクセス トークンを効率的に更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。