google-api - 如果活动是通过服务帐户(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 同意屏幕中的应用类型仍为“内部”。
有人可以解释我在这里缺少什么吗?
解决方案
具有域范围委派的服务帐户只能用于域
G Suite 帐户是一个域,个人消费者帐户不是域。
因此,您不能通过服务帐户代表消费者帐户用户执行请求。
相反,您需要像文档示例一样直接def@gmail.com
创建事件。
推荐阅读
- java - 休眠@ManyToMany,错误:关系不存在
- javascript - 在 AJAX 成功的函数中使用时数组内容不会改变
- excel - 试图求和索引但它不匹配
- javascript - 如何改变当前元素的innerHTML?
- sql - 如何使用 ROLLUP 过滤 SQL 查询
- python - Django 聚合最大值覆盖查询中的值
- ssh - 是否可以在我自己的机器上编辑代码并将其保存到我已通过 ssh 登录的帐户中?
- python - 用户信息 Django 的 CSV 下载
- java - 为什么 char 数据类型的零和空值在 java 中被视为相同
- php - 错误回显形式预期的逗号或分号