GmailService создать Watch(), получая ошибку "Пользователь не авторизован"

Этот этот код snniped:

  credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,//read from client secret.json file
                Scopes,
                "user",
                CancellationToken.None).Result;

   // Create Gmail API service.
   var service = new GmailService(new BaseClientService.Initializer()
   {
      HttpClientInitializer = credential,
      ApplicationName = ApplicationName,
   });

   UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me");
   WatchRequest body = new WatchRequest()
        {
            TopicName = "projects/push-notifications-ver3/topics/mytopic",
            LabelIds = new[] {"INBOX"}
  string userId = "me";
  UsersResource.WatchRequest watchRequest = service.Users.Watch(body, userId);
  WatchResponse test = watchRequest.Execute();

Ошибка при получении: Ошибка при отправке тестового сообщения в проекты Cloud PubSub /push-notifications-ver3/themes/mytopic: пользователь не авторизован для выполнения этого действия. [403]

Тема создана с подпиской, текущему пользователю предоставлено разрешение на владение темой. Есть предложения, почему пользователь не авторизован?

1 ответ

Вы завершили процесс OAuth для данного пользователя? Кроме того, вы заменяете слово "пользователь" в методе AuthorizeAsync() вашим аутентифицированным пользователем? Если да, то попробуйте сделать это с новым файлом секретов клиента, а также проверьте, присутствует ли PubSub Scope в области видимости переменной.

Я сталкиваюсь с подобной проблемой, и это оказалось одной из этих проблем. Может работать и для вас.

Другие вопросы по тегам