google-api - 使用服务帐户的 Gmail API 收到委派被拒绝错误消息
问题描述
我正在使用 Google API 开发基于 Web 的应用程序。我正在使用服务器到服务器,这显然是一个服务帐户。我快完成了。
我现在可以通过 Google api 插入新用户。我什至可以通过 Google API 创建和/或授予新创建的用户对 Team Drive 的访问权限。意思是,我有一个可以模拟所有域用户的服务帐户。
问题:但是为什么我在尝试通过 Gmail API 模拟用户时会出错?我需要向新创建的用户添加 Gmail 标签和过滤器,但我收到一条错误消息,指出“Deligation denied”。我错过了什么吗?
显然,我在 G Suite 中已经有一个具有适当范围的工作服务帐户设置。我猜用户 ID“我”不是一个选项,因为我的应用程序需要模拟一个新创建的 G Suite 用户。如果我错了,请纠正我。
$service = new \Google_Service_Gmail($this->client($scopes));
$serviceLabel = new \Google_Service_Gmail_Label();
$serviceLabel->setLabelListVisibility('labelShow');
$serviceLabel->setMessageListVisibility('show');
$serviceLabel->setName($label_name);
try {
$resp = $service->users_labels->create($email, $serviceLabel);
} catch (Google_Service_Exception $e) {
return false;
}
这是我得到的错误
{#398 ▼
+"statusCode": 403
+"errors": array:1 [▼
0 => array:3 [▼
"domain" => "global"
"reason" => "forbidden"
"message" => "Delegation denied for service-account-user@domain.com"
]
]
+"message": """
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Delegation denied for service-account-user@domain.com"
}
],
"code": 403,
"message": "Delegation denied for service-account-user@domain.com"
}
}
"""
}
预计将为通过应用程序创建的每个用户自动添加一个 Gmail 标签。
解决方案
推荐阅读
- reactjs - 无法导入或导出类或函数 - React
- mongodb - MongoDB 查询 - 嵌套对象
- angular - 如何使用 Angular 10 SSR / 通用运行 Chart.js?
- django - django 中每个帖子的照片
- django - Django 脚本组织的最佳实践
- python - 多个时间序列数据的重叠细线图
- python - 如何使用正则表达式替换没有嵌套括号的字符串中不匹配的括号?
- google-cloud-platform - 将“非托管实例组”添加到 HTTPS 负载均衡器时响应缓慢
- c# - 如何将计算机上已安装应用程序的列表写入文本文件?
- android - Detox 至少 75% 的视图区域显示给用户