我正在使用Google API开发基于Web的应用程序。我正在使用服务器到服务器,这显然是带有服务帐户的。我快完成了。
我现在可以通过Google api插入新用户。我什至可以通过Google API创建和/或授予新创建的用户对Team Drive的访问权限。意思是,我有一个可以模拟所有域用户的服务帐户。
问题: 但是,为什么在尝试通过Gmail API模仿用户时出现错误?我需要向新创建的用户添加Gmail标签和过滤器,但是却收到一条错误消息,指出“拒绝授权”。我想念什么吗?
很明显,我在G Suite中已经具有有效的服务帐户设置和适当的范围。我猜userID“ me”不是一个选项,因为我的应用程序需要模拟一个新创建的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标签。