Google API 只访问一个帐户的应用程序的身份验证

Google API Authentication for App That Only Accesses One Account

我应该使用服务帐户还是 OAuth 2.0 客户端 ID?

我很难理解 Google 关于对其 API 进行身份验证的文档。我正在创建一个基本应用程序,它将帮助用户为单个 Google 帐户(该帐户在所有用户之间共享)添加和修改 Google 日历事件。我只需要该应用程序访问一个帐户,它永远不需要访问任何其他帐户。

在我看来,服务帐户最适合此操作,但 Google 的文档建议服务帐户应仅用于自动化流程(除非我有误解)。例如 this page contains the following,描述何时使用服务帐户。

我的应用程序是否有资格代表用户行事?

如果是这样,我想使用 OAuth 客户端 ID 凭据,这将要求用户登录 google 帐户。在这种情况下,有没有一种方法可以保证他们只登录我要修改的一个帐户?

我找不到任何关于 OAuth 身份验证请求的合适文档来自己解决这个问题。如果有的话,你能指点我吗?

我确定我误解了这里的一些基本内容,但感谢您的帮助!

首先,您应该知道如果您有 google 工作区域帐户,则只能将服务帐户与 Google aclendar api 一起使用。

然后您可以设置日历和域用户,服务帐户可以代表该域用户来控制对该日历的访问。

假设您的应用程序将在此日历上执行所有操作,那么是的,我会说您可以为此使用服务帐户。如果您的应用程序实际上有一个 ui 和日历,您只需使用 google 日历来存储数据。

但是,如果您打算与用户自己共享此日历,这样他们就可以在自己的 google 日历帐户中看到它。我不确定服务帐户是否可行。

如果您希望用户能够看到它并进行更改,那么您可能只想使用 Oauth2。授予他们访问日历的权限,然后请求访问他们的日历帐户。

该选项的缺点是验证过程。您将获得所有用户日历的访问权限,并且您将需要写入权限。

如果您可以使用服务帐户,您确实应该考虑它,它会为您省去很多验证麻烦。