【发布时间】:2021-09-29 14:10:38
【问题描述】:
我正在尝试阅读和删除我的邮件以进行一些自动化测试,我的问题是我不能使用 oauth,因为它需要用户输入。所以我试图使用服务帐户
但是当我运行我的代码时,我得到了一个错误
现在我想知道我的代码或我在 Google 控制台中的权限是否有问题
错误:
'发生一个或多个错误。 (错误:“unauthorized_client”,描述:“客户端未授权使用此方法检索访问令牌,或客户端未授权任何请求的范围。”,Uri:“”)'
出现在这里:credential.RequestAccessTokenAsync(CancellationToken.None).Result
代码
private ServiceAccountCredential credential;
private GmailService Service { get; set; }
// If modifying these scopes, delete your previously saved credentials
private static string[] Scopes = { GmailService.Scope.MailGoogleCom };
private static string applicationName = "EmailReader";
private static string credentialsFile = "emailreader-289206-c91027110691.p12";
private static string keyPassword = "notasecret";
private static string serviceAccountEmail = "auristesterdienstkonto@emailreader-289206.iam.gserviceaccount.com";
private static string userEmail = "auristester1@gmail.com";
private Func<Message, bool> lastFilter;
public GmailLibary() //my constructor
{
var certificate = new X509Certificate2(
credentialsFile,
keyPassword,
X509KeyStorageFlags.Exportable);
credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
User = userEmail,
Scopes = Scopes
}.FromCertificate(certificate)
);
if (credential.RequestAccessTokenAsync(CancellationToken.None).Result)
{
Service = new GmailService(
new BaseClientService.Initializer()
{
ApplicationName = applicationName,
HttpClientInitializer = credential
}
);
}
}
【问题讨论】:
标签: c# google-oauth gmail-api google-workspace service-accounts