我在 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(使用前将#替换为@)