电子邮件审核 API - 403 禁止访问

Email Audit API - 403 Forbidden

我正在尝试使用电子邮件审核下载用户邮箱 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);

我已经在 Developers Console 中创建了服务帐户,并在 Admin console 中授予客户端 ID 对 https://apps-apis.google.com/a/feeds/compliance/audit/ 的访问权限。

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

好的,所以我放弃了让它与服务帐户一起使用的尝试,尽管 Google 的文档会让您相信这是正确的方法。在向 Google 支持人员发送电子邮件后,我了解到我可以将 OAuth2 用于在开发人员控制台上创建应用程序的超级用户帐户。

然后我按照此处概述的过程努力获取用于离线访问的访问令牌(刷新令牌): Youtube API single-user scenario with OAuth (uploading videos) 然后获取该刷新令牌并将其与此代码一起使用:

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);
}

这是来自这里的代码 (除了我更改了倒数第二行......无论出于何种原因,在我进行更改之前共享的代码都不起作用)。

所以我终于能够获得一个访问令牌,允许我访问电子邮件审计 API。一旦我停止尝试使用服务帐户,一切都会变得轻而易举。