谷歌 gmail api oauth2 身份验证错过了解

Posted

技术标签:

【中文标题】谷歌 gmail api oauth2 身份验证错过了解【英文标题】:Google gmail api oauth2 authentication miss understood 【发布时间】:2021-11-09 02:04:42 【问题描述】: 我试图创建一个脚本来获取在我的 gmail 帐户中发送的特定电子邮件。 我在谷歌云平台上创建了这个项目,我按照这个 yt 视频的说明进行操作:https://www.youtube.com/watch?v=j_ilbyXwIzI 并且成功了。两三个月后,我想再试一次,因为我把它作为一个副项目搁置了一段时间,但它没有用。 它会引发此错误: **php 致命错误:未捕获的 Google\Service\Exception:** **“错误”:“invalid_grant”,** **“error_description”:“错误请求”** ** 在 /root/vendor/google/apiclient/src/Http/REST.php:128 中** **堆栈跟踪:** **#0 /root/vendor/google/apiclient/src/Http/REST.php(103):** **Google\Http\REST::decodeHttpResponse()** **#1 [内部函数]:Google\Http\REST::doExecute()** **#2 /root/vendor/google/apiclient/src/Task/Runner.php(182): call_user_func_array()** **#3 /root/vendor/google/apiclient/src/Http/REST.php(66): Google\Task\Runner->run()** **#4 /root/vendor/google/apiclient/src/Client.php(898): Google\Http\REST::execute()** **#5 /root/vendor/google/apiclient/src/Service/Resource.php(238): Google\Client->execute()** **#6 /root/vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersMessages.php(168): Google\Service\Resource->call()** **#7 /root/quickstart.php(72): Google_Service_Gmail_Resource_UsersMessages->listUsersMessages()** **#8 main**

在第 128 行的 /root/vendor/google/apiclient/src/Http/REST.php 中抛出


在阅读了文档和谷歌帖子但没有找到答案后,我创建了一个新的 OAuth2.0 客户端 ID 并将其配置为新的 Web 服务器,它像以前一样工作。

现在我的问题是,是什么让第一个代码不再工作,什么过期了?令牌或其他东西。 我应该怎么做才能防止这个问题再次发生?

提前致谢!

【问题讨论】:

【参考方案1】:

无效授权通常意味着您的刷新令牌已过期。

现在最常见的原因是您的应用程序设置为测试而不是生产。

处于测试阶段的应用程序将在 7 天内重置其刷新令牌。如果您希望它持续超过 7 天,您需要将应用程序设置为生产。

【讨论】:

非常感谢您的回复,请多提问题。有没有办法自动刷新令牌?确实你是对的,发布状态设置为测试。 只有再次请求用户访问才能获得新的刷新令牌。

以上是关于谷歌 gmail api oauth2 身份验证错过了解的主要内容,如果未能解决你的问题,请参考以下文章

通过浏览器身份验证和休息请求 - Gmail API

如何使用 Twisted 通过 OAuth2.0 身份验证检查 Gmail

似乎无法通过 Gmail API 进行身份验证以阅读电子邮件

发布到 Gmail API 时出现 http 500 后端错误

谷歌身份验证:OAuth2 不断返回“invalid_grant”

oAuth2 gmail 集成错误