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 :
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); }
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!