c# - gmail API使用服务帐户删除电子邮件
问题描述
我正在尝试阅读和删除我的邮件以进行一些自动化测试,我的问题是我不能使用 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
}
);
}
}
解决方案
推荐阅读
- sql - 在 Oracle SQL 中检索从星期五晚上 7 点到当前日期的数据
- ios - 为什么 SwiftUI 中的 Today App Extension Widget 是白色的?
- java - 动态加载和实例化不在类路径中的 .class
- spring-boot - 如何在 Spring Boot 中从不同位置为主类和测试类加载不同的配置?
- kotlin - Kotlin 中的静态方法作为 Java 中的静态方法
- python - 让测试容器与棉花糖一起工作
- android - 更改另一个布局文件的 TextView
- sql - 跳过下一个坐标
- java - java - 如何在java中准确获取UTF-8字符串?
- pandas - 查找不同数据框熊猫中两列之间的差异