【发布时间】:2017-01-23 10:40:29
【问题描述】:
我想使用 Gmail API 阅读我的 Gmail 收件箱。由于我的应用程序没有用户交互,我需要使用服务帐户。 根据要求,我收到以下错误:
"InnerException = {"Error:\"unauthorized_client\", Description:\"Unauthorized client or scope in request.\", Uri:\"\""} "
这是我的代码:
string applicationName = "Gmail API .NET";
string[] scopes = { GmailService.Scope.GmailReadonly };
string certPath = "./XXXXXXXXXX.p12";
string userEmail = "MYEMAIL@gmail.com";
string serviceAccountEmail = "MYSERVICEACCOUNT...am.gserviceaccount.com";
//Carga el certificado obtenido de
var certificate = new X509Certificate2(certPath, "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
User = userEmail,
Scopes = scopes
}.FromCertificate(certificate)
);
if (credential.RequestAccessTokenAsync(CancellationToken.None).Result) <--- Here I get the error
{
GmailService gs = new GmailService(
new BaseClientService.Initializer()
{
ApplicationName = applicationName,
HttpClientInitializer = credential
}
);
}
我做错了什么?有人可以帮帮我吗?
问候
【问题讨论】:
-
您需要配置您的 Gmail 帐户以允许 POP3/SMTP 访问。您可以在您的 Gmail 在线设置中执行此操作。
-
谢谢。我做到了,但我得到了相同的结果:(
-
试试这个。 ebstalimited.zendesk.com/hc/en-us/articles/…您还需要 G Suite 才能使用服务帐号。
标签: c# oauth-2.0 gmail-api service-accounts