Google API:“invalid_grant”,但代码没有改变

2024-01-26

我在 Google API 身份验证方面遇到以下问题:

PHP 致命错误:未捕获异常“Google_Auth_Exception”,消息“刷新 OAuth2 令牌时出错,消息:”{ “错误”:“无效授权” }'' 在 /home/bot/bot/vendor/google/apiclient/src/Google/Auth/OAuth2.php:328

然而,这个问题很奇怪,因为相同的代码在我的本地电脑上运行,但在服务器上停止运行。是否有可能与服务器时间有关?我的系统时钟已同步,但服务器大约落后 1 分钟。说真的,尽管我根本没有更改代码,但我不知道为什么它不再起作用了。以前是可以的,但是突然就出现这个问题了。

我能用它做什么呢?

<?php
$client = new Google_Client();
$client->setApplicationName('My App');
$client->setClientId($clientId);
$client->setClassConfig(
    'Google_Cache_File',
    ['directory' => __DIR__.'/res/tmp']
);

$service = new Google_Service_Calendar($client);

$cred = new Google_Auth_AssertionCredentials(
    $serviceAccountName,
    // https://www.googleapis.com/auth/calendar
    [Google_Service_Calendar::CALENDAR],
    $keyFile
);
$client->setAssertionCredentials($cred);

var_dump($service->calendarList->listCalendarList());

解决方案是同步服务器时间。服务器时间与原子钟仅相差 40 秒,但在向我的托管提供商发送票证后,我设法使其正常工作。问题已经消失了。然而,如果有人能解释为什么 OAuth 在精确的日期和时间上如此严格,我将不胜感激。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google API:“invalid_grant”,但代码没有改变 的相关文章

随机推荐