Я пытаюсь вызвать watch() для почтового ящика. Я настроил учетную запись службы Iam, создал тему и подписку. Я предоставил своему сервисному аккаунту полные права (владельца) на мою тему и подписку. Но при вызове execute на watch() я получаю сообщение об ошибке:
Google.Apis.Requests.RequestError Error sending test message to Cloud PubSub projects/projectid/topics/topicname : User not authorized to perform this action. [403] Errors [ Message[Error sending test message to Cloud PubSub projects/projectid/topics/topicname : User not authorized to perform this action.] Location[ - ] Reason[forbidden] Domain[global] ]
Вот код, который я использую для настройки своего сервиса:
credential = new X509Certificate2("file.p12"), "password", X509KeyStorageFlags.Exportable);
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = applicationame,
});
WatchRequest body = new WatchRequest()
{
TopicName = "projects/projectid/topics/topicname",
LabelIds = new[] {"INBOX"}
string userId = "me";
UsersResource.WatchRequest watchRequest = service.Users.Watch(body, userId);
WatchResponse test = watchRequest.Execute();
Моя учетная запись службы имеет доступ ко всем следующим областям:
https://mail.google.com/
https://www.googleapis.com/auth/gmail.modify
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/gmail.metadata
Я что-то упустил здесь?
РЕДАКТИРОВАТЬ
Добавлена следующая область, но все еще безуспешно: https://www.googleapis.com/auth/pubsub
РЕДАКТИРОВАТЬ Также безуспешно добавлено следующее: https://www.googleapis.com/auth/cloud-platform