Я занимаюсь разработкой веб-приложения с использованием Google API. Я использую сервер-сервер, который, очевидно, с учетной записью службы. Я почти закончил.
Теперь я могу добавлять новых пользователей через Google API. Я даже могу создавать и / или предоставлять недавно созданным пользователям доступ к Team Drive через Google API. Это означает, что у меня есть учетная запись службы, которая может выдавать себя за всех пользователей домена.
Проблема:
Но почему я получаю ошибки при попытке выдать себя за пользователя через 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 будет добавляться автоматически для каждого пользователя, создаваемого с помощью приложения.