邮件审计API - 403禁止

本文关键字:禁止 API 审计 | 更新日期: 2023-09-27 18:07:31

我正在尝试使用电子邮件审计API下载用户的邮箱。我得到一个403 Forbidden响应对这段代码(错误发生在最后一行,调用UploadPublicKey方法):

    var certificate = new X509Certificate2(System.Web.HttpRuntime.AppDomainAppPath + "key.p12", "notasecret", X509KeyStorageFlags.Exportable);
    ServiceAccountCredential credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer(serviceAccountEmail)
       {
           Scopes = new[] { "https://apps-apis.google.com/a/feeds/compliance/audit/" }
       }.FromCertificate(certificate));
    credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Wait();
    DebugLabel.Text = credential.Token.AccessToken;
    var requestFactory = new GDataRequestFactory("My App User Agent");
    requestFactory.CustomHeaders.Add(string.Format("Authorization: Bearer {0}", credential.Token.AccessToken));
    AuditService aserv = new AuditService(strOurDomain, "GoogleMailAudit");
    aserv.RequestFactory = requestFactory;
    aserv.UploadPublicKey(strPublicKey);

我已经在开发人员控制台中创建了服务帐户,并在管理控制台中授予客户端ID访问https://apps-apis.google.com/a/feeds/compliance/audit/。

在我看来,这个帐户应该拥有它需要的所有权限,但它没有。你知道我错过了什么吗?

邮件审计API - 403禁止

好的,所以我放弃了尝试让它与一个服务帐户一起工作,即使这是谷歌的文档会让你相信是正确的方法。在给谷歌支持部门发邮件后,我了解到我可以只使用OAuth2作为在开发者控制台上创建应用程序的超级用户帐户。

因此,我通过以下过程获得离线访问的访问令牌(刷新令牌):Youtube API单用户场景与OAuth(上传视频)然后使用这个刷新令牌并使用下面的代码:

public static GOAuth2RequestFactory RefreshAuthenticate(){
OAuth2Parameters parameters = new OAuth2Parameters(){
    RefreshToken = "<YourRefreshToken>",
    AccessToken = "<AnyOfYourPreviousAccessTokens>",
    ClientId = "<YourClientID>",
    ClientSecret = "<YourClientSecret>",
    Scope = "https://apps-apis.google.com/a/feeds/compliance/audit/",
    AccessType = "offline",
    TokenType = "refresh"
};
OAuthUtil.RefreshAccessToken(parameters);
return new GOAuth2RequestFactory(null, "<YourApplicationName>", parameters);
}

这是从这里的代码https://stackoverflow.com/a/23528629/5215904(除了我改变了第二到最后一行…不管什么原因,共享的代码不能工作,直到我做了修改)。

所以我终于能够让自己获得一个访问令牌,允许我访问电子邮件审计API。从那里开始,当我不再试图在服务帐户上捣乱时,一切都变得轻而易举了。