为什么在使用Gmail Api时出现“错误请求”错误?

时间:2019-04-10 13:53:44

标签: wpf api service gmail account

我正在使用wpf应用程序。我想从域中的所有帐户中删除电子邮件。 我正在为此使用服务帐户范围的说明。

我还使用here进行身份验证和其他方法。我已授予我的管理员帐户的所有权限。

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 :(得分:0)

您需要添加一个用户帐户,例如:

ServiceAccountCredential.Initializer constructor = 
    new ServiceAccountCredential.Initializer(serviceAccountEmail) 
    { 
        user = user_email; 
        Scopes = new[] { GmailService.Scope.MailGoogleCom }
    }.FromCertificate(certificate));
相关问题