使用服务帐户与 OAuth 访问 Google API 时的限制

Limits when accessing Google APIs using Service Account vs OAuth

我当前的应用程序使用“3-legs”OAuth 2.0 访问 Google API 之一。用户在 Google 同意屏幕上授权应用程序,然后应用程序代表用户请求 API 并向他显示从 API 加载的一些奇特数据。我的应用程序每天都从这个 API 加载和转换数据,所以当用户下次来时,他会看到最相关和最实际的数据。

一开始一切正常,但随着时间的推移,我遇到了两个问题: 1.查询限额。 2.令牌生命周期。

我的问题专门针对第二个问题,我称之为 "token lifetime"。一段时间后,访问令牌过期,当用户返回应用程序时,我们的应用程序不得不再次将他发送到同意屏幕。此外,当访问令牌一直处于过期状态时,我的应用程序无法为用户加载相关数据。

我该如何解决这个问题?如何延续 access/refresh 代币的生命周期?服务帐户会有帮助吗?服务帐户是否适用于每个用户的 Google Search Console API,或者用户应该是我域内的 G Suite 用户还是什么? 这些问题官方完全搞不清楚documentation here and from the Search Console API documentation

如果您有使用 Google 的 API 的经验,请帮助我! 谢谢

在征得用户同意的情况下使用 OAuth 时,无需反复提示用户征得同意。

[a] 如果您的用例完全在线并且您希望能够在用户每次访问您的应用程序时请求令牌,请使用 Google Sign In library or see this documentation for client-side apps.

[b] 如果您的用例是您希望即使用户不在场也能够获取访问令牌,那么您需要请求授权代码并存储您的刷新令牌。您的刷新令牌是长期令牌,可以是 exchanged periodically for access tokens.