google 日历 api 令牌将在 7 天后过期

google calendar api token expires in 7 days

我使用 this guide 创建了一个 Google 日历 OAuth2 客户端 ID 和客户端密码。然后我使用这个 gcalcli 命令创建了一个 API 访问令牌:

gcalcli --noauth_local_webserver --client-id=$clientid --client-secret=$clientsecret --config-folder $path/auth agenda

这很好用,命令向我显示了 google 日历事件的列表。

它还创建了这个令牌 $path/auth/oauth,它允许我再次 运行 命令,而不必每次都进行身份验证,因为保存的令牌会为我完成。

我的问题是,由于某种原因,oauth 令牌每 7 天过期一次,然后我必须再次执行相同的过程以创建一个新令牌。

oauth 文件中有一个条目显示 "expires_in": 83,,而其他时候我经历了相同的过程,条目是 "expires_in": 3599,。我假设此条目定义了令牌的寿命,但我不是 100% 确定。

所以我的问题是,为什么这个令牌会在一周内过期,我该怎么做才能延长它的时间?

附加信息: 这基本上是 Debian 11 上的 bash 脚本 运行ning。它 运行s gcalcli,获取 google 日历事件列表并通过短信发送提醒。

我知道有一种方法可以使用刷新令牌来更新访问令牌,但我还没有这样做。

要清楚Access tokens在一小时内过期,Refresh tokens用于在刷新令牌过期时请求新的访问令牌。

如果您发现您的应用在 7 天后停止运行,则可能是由于以下原因。您可能遇到 invalid token 错误。

如果您查看 expiration 的文档,它指出

A Google Cloud Platform project with an OAuth consent screen configured for an external user type and a publishing status of "Testing" is issued a refresh token expiring in 7 days.

解决方案是将您的应用设置为正式版

I realize there's a way to use the refresh token to renew the access token, but it's not something I got around doing yet.

如果您发现您的代码在 7 天后停止工作,您的代码中的某些内容已经在使用刷新令牌。我在 gcalcli internally it uses the Google api python client library. This is what is refreshing your access token. #L132

中做了一些挖掘