如何从outlook帐户阅读电子邮件与oauth2和没有用户交互

wz1wpwve  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(180)

我在开发一个控制台应用程序,必须登录Outlook365电子邮件帐户,然后获取电子邮件中的附件。
我现在有我在ExchangeOAuth2上找到的代码。
当我到了令牌必须取回的部分时,它打开了一个网站,我必须选择一个帐户才能继续。
我怎样才能防止这种情况。没有用户交互。
我的代码:

string? host = Configuration.GetSection("email").GetValue<string>("host");
 int? port = Configuration.GetSection("email").GetValue<int>("port");
 string? clientId = Configuration.GetSection("email").GetValue<string>("clientId");
 string? tenantId = Configuration.GetSection("email").GetValue<string>("tenantId");

 if (string.IsNullOrEmpty(host) || port == null || string.IsNullOrEmpty(clientId) || 
     string.IsNullOrEmpty(tenantId))
 {
   return;
 }

 var options = new PublicClientApplicationOptions
 {
   ClientId = clientId,
   TenantId = tenantId,
   RedirectUri = "http://localhost"
 };

 var publicClientApplication = PublicClientApplicationBuilder
     .CreateWithApplicationOptions(options)
     .Build();

 var scopes = new string[] {
   "email",
   "offline_access",
   "https://outlook.office.com/IMAP.AccessAsUser.All" // Only needed for IMAP
 };

 var authToken = await 
 publicClientApplication.AcquireTokenInteractive(scopes).ExecuteAsync();

 var oauth2 = new SaslMechanismOAuth2(authToken.Account.Username, 
     authToken.AccessToken);

[更新]我已经更改了我的代码以使用microsoft graph。我使用了this tutorial
但这仍然是要求我去一个网站en填写代码。
这正是我不想看到的。没有用户交互,控制台必须自己运行。
为什么这么难?
有人能举个例子来说明如何做到这一点吗?

brgchamk

brgchamk1#

我想通了,在邮件账户的Azure环境中,必须设置一些API权限。

相关问题