1

我正在尝试在测试 2016 混合/交换环境中从 Microsoft Graph API 中查询事件。似乎用户需要订阅 O365 才能为用户返回事件,否则,当我查询事件时。我明白了。。

/users/{user}/calendarView/delta

此邮箱尚不支持 REST API。

或者..

/users/{user}/事件

无法发现资源。

我有几个澄清。我想澄清一下,预期的行为是我可以查询 Microsoft 图形以在混合环境中命中本地交换,其中邮箱仅在本地,它应该从系统查询事件。

如果上述情况属实,我将假设我们的环境配置错误并且我是开放的和/或非常感谢任何解决问题的潜在建议。

此外,我正在使用此处定义的“无需用户访问”流程:https ://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service

编辑

我确实发现在执行时Get-MsolServicePrincipal | where {$_.AppPrincipalId -eq '00000002-0000-0ff1-ce00-000000000000'} | fl DisplayName,ServicePrincipalNames

我得到:

DisplayName           : Office 365 Exchange Online
ServicePrincipalNames : {https://manage.protection.apps.mil, 
    https://ps.compliance.protection.outlook.com,
    https://autodiscover-s.office365.us/, 
    https://outlook.office365.us/...}

似乎它缺少本地服务器的端点,我认为在运行混合设置时应该注意这些端点。我现在已经运行了 15 次。

4

1 回答 1

1

这取决于您正在开发的应用程序类型。

如果您想开发原生和移动应用程序或一些 Web 应用程序,您可以使用 OAuth 2.0“授权码”授权流程来获取令牌。

如果守护程序应用程序或后台服务在服务器上运行,则此应用程序会使用自己的身份调用 Microsoft Graph,而不是代表使用 OAuth 2.0“客户端凭据”授权流向 Azure AD 进行身份验证并获取令牌的用户。

参考:“无需用户即可访问”

https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service

提示:

  1. 要在 Microsoft 应用注册门户中为您的应用配置应用程序权限:在 Microsoft Graph 下,选择应用程序权限旁边的添加,然后在选择权限对话框中选择您的应用程序所需的权限。
  2. 获得管理员同意 a. 您可以依靠管理员在 Azure 门户授予您的应用所需的权限;但是,通常更好的选择是使用 Azure AD v2.0 /adminconsent 端点为管理员提供注册体验。湾。像这样请求:

// 换行只是为了便于阅读。

获取https://login.microsoftonline.com/ {租户}/adminconsent

?client_id=6731de76-14a6-49ae-97bc-6eba6914391e

&状态=12345

&redirect_uri= http://localhost/myapp/permissions

于 2018-10-09T07:33:10.957 回答