我对Google API的身份验证存在以下问题:
PHP致命错误:未捕获的异常'Google_Auth_Exception',并显示消息'刷新OAuth2令牌时出错,消息:'{ “错误”:“invalid_grant” } /'在/home/bot/bot/vendor/google/apiclient/src/Google/Auth/OAuth2.php:328
然而,问题非常奇怪,因为相同的代码在我的本地PC上工作并停止在服务器上工作。是否可能,它与服务器时间有关?我的系统时钟同步,但服务器向后约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());
答案 0 :(得分:2)
解决方案是同步服务器时间。服务器时间与原子钟不同只有40秒,但在向我的托管服务提供商发送票证后,我设法让它运行起来。问题已经消失。但是,如果有人能够解释为什么OAuth在确切的日期和时间如此严格,我将不胜感激。