Maison > développement back-end > tutoriel php > Comment actualiser efficacement les jetons d'accès client de l'API Google pour éviter les erreurs « invalid_grant » ?

Comment actualiser efficacement les jetons d'accès client de l'API Google pour éviter les erreurs « invalid_grant » ?

Susan Sarandon
Libérer: 2024-12-17 08:14:24
original
743 Les gens l'ont consulté

How to Efficiently Refresh Google API Client Access Tokens to Avoid

Actualisation des jetons d'accès client de l'API Google

Comprendre le problème

Lors de l'utilisation de l'API Google Analytics, vous pouvez rencontrer des erreurs lorsque vous essayez d'accéder aux données de plusieurs comptes Google. Ce problème se produit car les jetons d'accès expirent après une heure. L'actualisation du jeton à l'aide de $client->refreshToken() devrait résoudre le problème, mais dans certains cas, cela peut renvoyer une erreur « invalid_grant ».

Solution

Pour actualiser correctement le jeton, vous devez comprendre les éléments suivants :

  • Tout d'abord Jeton : Le jeton initial que vous obtenez lors de l'authentification comprend un jeton d'actualisation.
  • Jeton temporaire : Le jeton actualisé, obtenu à l'aide de $client->refreshToken($refreshToken), est valable une heure.
  • Temps d'actualisation : Le premier jeton et le jeton temporaire expirent après un heure.

Mise en œuvre du code

Le code ci-joint illustre une solution pour gérer l'expiration des jetons :

// 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);
}
Copier après la connexion

Ce code récupère l'original jeton, calcule son délai d'expiration et vérifie s'il a expiré. Si tel est le cas, il actualise le jeton à l'aide du jeton d'actualisation et met à jour la base de données. Si le jeton d'origine n'a pas expiré, il définit le jeton d'accès du client comme jeton d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal