【发布时间】:2019-11-27 19:11:20
【问题描述】:
我想从控制台应用程序定期访问 Microsoft Graph,以便将邮件从 Outlook 邮箱复制到数据库。 为了以编程方式进行身份验证,我不得不使用 Microsoft Graph 的“客户端凭据流”。
这些是我必须采取的步骤:
- 在 Azure 门户中注册应用并为其创建客户端密码。
-
添加我需要的所有权限并授予他们访问权限:
-
让管理员通过首次访问来确认这些权限。这是使用以下 URL 完成的:
https://login.microsoftonline.com/{tenant}/v2.0/adminconsent ?client_id={app id} &state=1234 &redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient &scope=https://graph.microsoft.com/.default我收到以下回复:
admin_consent: True tenant: ca566779-1e7b-48e8-b52b-68********** state: 12345 scope**: scope: https://graph.microsoft.com/User.Read https://graph.microsoft.com/.default(范围可能会解释这里稍后描述的问题:为什么我配置了 13 个不同的权限时只得到
User.Read??) -
获取访问令牌(成功!):
-
尝试读取用户(成功):
-
尝试阅读我自己的电子邮件(没有成功):
-
尝试阅读其他人的电子邮件(用户被邀请以访客身份访问应用程序,但仍然没有成功):
我不明白为什么我无法阅读消息,但我可以阅读用户。似乎权限被完全忽略了(我确认我不需要任何权限来读取用户)。
更新
这是我的租户名称:
这些是添加到租户的用户:
重要提示:我的 Azure AD 中没有 Office 365 订阅。所有这些电子邮件都属于不同的广告。
上一个问题 "The tenant for tenant guid does not exist" even though user is listed on users endpoint? 与我的类似,但我相信这不是重复的,因为我的问题略有不同,并且建议的解决方案使用 OAuth1(我使用的是 OAuth2)。
【问题讨论】:
标签: microsoft-graph-api microsoft-graph-mail