首页 > 解决方案 > 如果活动是通过服务帐户(Google 日历 API)创建的,如何为非工作区 Google 帐户创建 Google 日历活动?

问题描述

我可以使用服务帐户和 Google Calendar API 在 Google 日历中创建一个事件,其中项目和服务帐户是在 Google Workspace 管理员帐户中创建的,并且在同一个帐户中,我启用了域范围的委派属性。我没有创建单独的日历,也没有授予对服务帐户的访问权限。如果我在 createDelegated() 中使用我的 workspace-google 帐户,则此事件将在“abc@myworkspace.com”日历中创建,并且“创建者”属性对于我添加的每个与会者来说也是相同的。

GoogleCredentials googleCredentials = GoogleCredentials
                    .fromStream(new FileInputStream(CREDENTIALS_FILE_PATH)).createScoped(SCOPES)
                    .createDelegated("abc@myworkspace.com");

所以我的问题是如果我需要为非工作区谷歌帐户创建事件怎么办(比如说 def@gmail.com)

我可以将“def@gmail.com”传递给 createDelegated() 吗?如果我这样做,我会得到,

Error getting access token for service account: 400 Bad Request

那么如何为非工作区谷歌帐户创建事件?

注意:OAuth 同意屏幕中的应用类型仍为“内部”。

有人可以解释我在这里缺少什么吗?

标签: google-apigoogle-calendar-apiservice-accountsgoogle-api-java-client

解决方案


具有域范围委派的服务帐户只能用于域

G Suite 帐户是一个域,个人消费者帐户不是域。

因此,您不能通过服务帐户代表消费者帐户用户执行请求。

相反,您需要像文档示例一样直接def@gmail.com创建事件


推荐阅读