c# - 以最简单的方式使用 Microsoft Graph 查找电子邮件
问题描述
我有一个自动化.NET Framework
项目Microsoft.Exchange.WebServices
(outlook.office365.com
最近我开始重写我的项目.NET Core
,这带来了许多问题,包括我继续使用EWS
:
今天,我们将分享我们计划在未来两年内放弃对 EWS 的基本身份验证访问,支持将在2020 年 10 月 13 日结束。
Microsoft Graph 是用于访问 Exchange Online 数据的推荐 API。旨在访问 Exchange Online 数据的新应用程序应使用 Microsoft Graph。
EWS
.NET Core
在安装后项目中出现的各种警告中,支持似乎也很低。
我目前的所有工作EWS
都是在一个类中完成的,其中传递了几个环境变量来设置WebCredentials
等,但是当我阅读了许多 Microsoft 文章(包括:无需用户访问)时,我意识到没有什么是简单的不再 :) 关于 Graph 的使用,我没有找到直接的代码示例来说明如何以最简单的方式将这种纯粹的后端集成实现到邮箱中。
我想知道是否有人可以给我一个与后端集成相关的简单且适当的身份验证和授权示例?即一个未经管理员同意的弹出窗口或任何其他不适合这样的集成的弹出窗口,这仍然可能吗?
解决方案
有委托和应用程序权限。委托是一个弹出窗口,需要用户,应用程序是通过服务主体(并且可以以非交互方式/自动化方式完成)。
上例中的第 2 步使用了User.Read.All
权限。这会为您提供电子邮件地址,以及有关您的用户的大量其他信息。如果您只想要电子邮件,那就太矫枉过正了。User.ReadBasic.All
为您的目的添加应用程序注册是一个更好的权限。(该示例应该可以正常工作,您将权限更改为User.ReadBasic.All
)
在示例的最后一部分(粘贴在下面)中,您将想要更改查询并且很可能想要添加一个迭代器。
GraphServiceClient graphClient = GetAuthenticatedGraphClient(config);
List<QueryOption> options = new List<QueryOption>
{
new QueryOption("$top", "1")
};
var graphResult = graphClient.Users.Request(options).GetAsync().Result;
Console.WriteLine("Graph SDK Result");
Console.WriteLine(graphResult[0].DisplayName);
Graph 和 MSAL 起初可能看起来很复杂,但非常有价值。微软正在定期添加功能(和函数)来绘制图表。图 1.0 文档
推荐阅读
- xml - 在 Inno Setup 中删除 XML 元素的内容
- laravel - 如果文件在 Laravel 上重命名,则无法删除文件
- php - 如何在 php 中读取此 xml 数据
- gwt - UserAgent 将被弃用 - 对 GXT 的影响
- javascript - 安装 c3 以在带有 ES6 导入的 webpack 项目中使用的正确程序是什么?
- google-sheets - Data Studio 中的数据集配置错误
- azure - Spark 不使用 ADLS Gen2 的谓词下推
- reactjs - Javascript(React) Object.keys 和 Object.getOwnPropertyNames 返回空数组
- azure - 使用 ARM 模板创建 SendGrid 帐户失败,法律条款不被接受
- javascript - 由于延迟加载,连接 dataLayer 以进行印象跟踪