首页 >后端开发 >php教程 >如何有效刷新 Google API 客户端访问令牌以避免'invalid_grant”错误?

如何有效刷新 Google API 客户端访问令牌以避免'invalid_grant”错误?

Susan Sarandon
Susan Sarandon原创
2024-12-17 08:14:24752浏览

How to Efficiently Refresh Google API Client Access Tokens to Avoid

刷新 Google API 客户端访问令牌

了解问题

使用 Google Analytics API 时,您可能会遇到错误当尝试访问多个 Google 帐户的数据时。出现此问题的原因是访问令牌在一小时后过期。使用 $client->refreshToken() 刷新令牌应该可以解决问题,但在某些情况下,可能会返回“invalid_grant”错误。

解决方案

要正确刷新令牌,您需要了解以下内容:

  • 首先令牌: 您在身份验证过程中获取的初始令牌包括刷新令牌。
  • 临时令牌: 使用 $client->refreshToken($refreshToken) 获取的刷新令牌为有效期一小时。
  • 刷新时间:第一个令牌和临时令牌都会在

代码实现

随附的代码演示了管理令牌过期的解决方案:

// 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);
}

此代码检索原始代码token,计算其过期时间,并检查它是否已过期。如果是,则它使用刷新令牌刷新令牌并更新数据库。如果原始令牌尚未过期,则会将客户端的访问令牌设置为原始令牌。

以上是如何有效刷新 Google API 客户端访问令牌以避免'invalid_grant”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn