了解问题
使用 Google Analytics API 时,您可能会遇到错误当尝试访问多个 Google 帐户的数据时。出现此问题的原因是访问令牌在一小时后过期。使用 $client->refreshToken() 刷新令牌应该可以解决问题,但在某些情况下,可能会返回“invalid_grant”错误。
解决方案
要正确刷新令牌,您需要了解以下内容:
代码实现
随附的代码演示了管理令牌过期的解决方案:
// 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中文网其他相关文章!