Почему я получаю сообщение об ошибке "Bad Request" при использовании Gmail Api? - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю с приложением wpf. Я хочу удалить электронную почту со всей учетной записи в домене. Для этого я использую широкое удаление служебной учетной записи.

Я также использую здесь для аутентификации и других методов. Я дал все разрешения для моей учетной записи администратора.

public GmailService GetService()
{ var certificate = new X509Certificate2(@"xxxxxxxxxxxx- 
fc9fcdc65959.p12", "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
           new ServiceAccountCredential.Initializer(serviceAccountEmail)
           {

               Scopes = new[] { GmailService.Scope.MailGoogleCom }
           }.FromCertificate(certificate));
        GmailService service = new GmailService(new 
BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = AppName,
        });
        return service;
    } 

Список функций ниже.

public static List<Google.Apis.Gmail.v1.Data.Message> 
ListMessages(GmailService service, String userId, String query)
    {
        List<Google.Apis.Gmail.v1.Data.Message> result = new 
List<Google.Apis.Gmail.v1.Data.Message>();
        UsersResource.MessagesResource.ListRequest request = 
service.Users.Messages.List(userId);
        request.Q = query;

        do
        {
            try
            {
                ListMessagesResponse response = request.Execute();
                result.AddRange(response.Messages);
                request.PageToken = response.NextPageToken;
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
            }
        } while (!String.IsNullOrEmpty(request.PageToken));

        return result;

    }

Когда я пытаюсь перечислить все электронные письма, я получаю эту ошибку.

"Google.Apis.Requests.RequestError
Bad Request [400]
Errors [
Message[Bad Request] Location[ - ] Reason[failedPrecondition] 
Domain[global]
]"

Кто-нибудь мне поможет?

1 Ответ

0 голосов
/ 11 апреля 2019

Вам необходимо добавить учетную запись пользователя, например:

ServiceAccountCredential.Initializer constructor = 
    new ServiceAccountCredential.Initializer(serviceAccountEmail) 
    { 
        user = user_email; 
        Scopes = new[] { GmailService.Scope.MailGoogleCom }
    }.FromCertificate(certificate));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...