我正在尝试使用Email Audit 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);
我在开发者控制台中创建了服务帐户,并在管理控制台中授予了https://apps-apis.google.com/a/feeds/compliance/audit/的客户端ID访问权限。
在我看来,帐户应该具有所需的所有权限,但它并不是。知道我错过了什么吗?
答案 0 :(得分:2)
好的,所以我放弃尝试使用服务帐户,即使这是Google的文档会让您相信这是正确的方法。在通过电子邮件发送Google支持后,我了解到我可以将OAuth2用于在开发人员控制台上创建应用程序的超级用户帐户。
然后,我按照此处列出的流程,致力于获取脱机访问的访问令牌(刷新令牌): Youtube API single-user scenario with OAuth (uploading videos) 然后获取该刷新令牌并将其与此代码一起使用:
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
html {
background-color: "#555761";
background: "#555761";
}
body {
font-family: "brandon-grotesque";
font-wieght: 100;
font-style: normal;
color: #656771;
bgcolor: "#555761";
}
p {
font-family: "brandon-grotesque";
font-wieght: 100;
font-style: normal;
color: #656771;
}
a {
color: #555761;
}
a:link {
color: #555761;
text-decoration: none;
}
a:visited {
color: #555761;
text-decoration: none;
}
a:hover {
color: #656771;
text-decoration: none;
}
a:active {
color: #555761;
text-decoration: none;
}
/* Auto center content in window */
#stage {
width:100%;
margin: 0 auto;
padding: 0;
}
#stage canvas, #overlay {
position: absolute;
margin: 0 auto;
padding: 0;
}
#overlay {
margin: 0 auto;
padding: 0;
}
#overlay p {
color: #333;
font-family: "museo-sans";
font-weight: 900;
font-style: normal;
font-size: 14px;
}
.centered {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
}
.centered-bottom {
position: fixed;
bottom: 3%;
left: 50%;
transform: translate(-50%, -0%);
-webkit-transform: translate(-50%, -50%);
}
这是来自https://stackoverflow.com/a/23528629/5215904的代码(除非我将第二行更改为最后一行......无论出于何种原因,代码共享在我做出更改之前都无效。)
所以我终于能够获得一个允许我访问Email Audit API的访问令牌。一旦我停止尝试使用服务帐户,一切都变得轻而易举。