【发布时间】:2014-01-30 17:35:35
【问题描述】:
我在向 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());
【问题讨论】:
-
向我们展示您要求的范围
-
我用示例代码编辑了我的帖子。它可以在我的 PC 上运行,但不能在服务器上运行(但它曾经是)。
-
不幸的是,在生成私钥甚至创建新的客户帐户之后 - 它只能在我的计算机上完美运行,但与服务器相同的问题。经过一番研究,我发现 Google 使用 400 HTTP 代码回答。
-
如果你解决了你的问题,请发布你的答案,如果可能的话,更新很多有同样问题的用户的问题