当前位置: 首页 > 知识库问答 >
问题:

获取OAuth令牌以读取Outlook电子邮件时要使用的“scope”值

潘弘壮
2023-03-14

我有一个现有的应用程序(作为WebJob运行的控制台应用程序),它使用Exchange Web服务读取共享Outlook 365邮箱中的电子邮件。这是可行的,但它使用的是基本身份验证,我想改用OAuth。我正在尝试使用Microsoft进行此操作。身份客户机密ClientApplicationBuilder获取访问令牌。我在网上读过许多文章和帖子,这些文章和帖子似乎对调用AcquireTokenForClient时“scope”参数应该是什么给出了相互矛盾的建议。有人说https://graph.microsoft.com/.default,其他人说https://outlook.office.com/.default或https://outlook.office365.com/.default.其他人似乎建议应该是邮件。阅读而不是。违约我已经尝试了以上所有方法,但都没有成功。有人能告诉我“scope”的正确值是多少吗?

共有1个答案

陶唯
2023-03-14

我假设您已经为Office 365租户注册了应用程序。一段时间以来,我们成功地使用EWS和现代身份验证。要使用OAuth身份验证访问租户中的用户邮箱,您必须授予注册应用程序API权限Exchange-full_access_as_app并使用https://outlook.office.com/.default作为范围。

var clientApp = ConfidentialClientApplicationBuilder
    .Create("applicationId")
    .WithTenantId("tenantId")
    .WithClientSecret("secret")
    .Build();

var authenticationResult = await clientApp.AcquireTokenForClient(new[] { "https://outlook.office.com/.default" }).ExecuteAsync();
var accessToken = authenticationResult.AccessToken;

然后将令牌添加到EWS请求的授权标头中。

 类似资料:
  • 如何从OAuth令牌对象获取calendarId(用户的电子邮件)? 详细信息:使用Google Javascript客户端库。授权后,我需要获取用户的电子邮件,这是来自令牌对象的calendarId。 对于Google Plus,文档称“me”关键字可以用来指代当前经过身份验证的用户。它不适用于日历API。我应该为日历API做什么? 请帮帮忙

  • 我只想从Microsoft Graph/Outlook endpoint获取属于电子邮件的特定类别。但是is给了我相关电子邮件中的所有类别。 [https://graph.microsoft.com/beta/me/outlook/masterCategories/?过滤器=displayName eq'红色类别'] 上面的链接是我对微软图形应用编程接口的查询,我得到以下结果

  • 嗨,我正在尝试从给定的令牌获取电子邮件用户。我尝试过这样来解析令牌,但根据以下示例,我总是得到空值或值: 我将令牌放在url上,就像这样localhost:8000/admin/user/get_all?token={{token},我还将令牌作为添加到头中注意:我正在使用postman发出请求。但是当我尝试将解析值传递给响应时,我总是得到值: 如果我错了,请纠正我:解析的意思是获取身份验证用户的

  • 是否可以将整个电子邮件作为一个文件或仅使用office javascript包收集所有电子邮件数据?我在参考:https://dev.office.com/reference/add-ins/outlook/1.5/office中没有找到类似的方法?product=outlook&version=v1.5但是可以一一获取所有的电子邮件数据(正文、抄送等),是不是唯一的方法? 我知道使用Micros

  • 我正在用自己的谷歌账号玩谷歌的OAuth 2.0游乐场,但我似乎无法用游乐场恢复我的Gmail地址。 我使用的范围是: 但当我调用API时:

  • 问题内容: 我正在寻找一个开放源代码的Java库,以从Microsoft Outlook阅读电子邮件,日历,联系人。您知道其中任何一个lib或解决方法吗? 现在的要求是仅读取数据并将其显示在jsp页面上。 谢谢 问题答案: 如果您在Windows上运行,则可能可以使用JaWin。它是一个开放源代码库,它包装COM对象并为您提供Java API来访问它们。据我所知,它的发行版包含有关如何连接到MS