【问题标题】:Google API: "invalid_grant", but the code haven't changedGoogle API:“invalid_grant”,但代码没有改变
【发布时间】: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 代码回答。
  • 如果你解决了你的问题,请发布你的答案,如果可能的话,更新很多有同样问题的用户的问题

标签: google-api-php-client


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 2014-06-24
    相关资源
    最近更新 更多