无法访问Microsoft Graph用户日历403

时间:2017-04-05 20:02:07

标签: microsoft-graph

我看过其他非常相似的帖子,但我找不到真正的答案。有人说"它即将到来",那些已经老了。

我正在使用O365的管理员凭据进行身份验证,并尝试提取日历信息。 Scope有Calendars.ReadWrite(属于App-Only和Delegate,只有范围),但它总是返回403. ErrorAccessDenied,"访问被拒绝。检查凭据,然后重试"

日历视图的图表文档显示它可以在请求中的用户/ {id}中发送,当我列出所有用户时,ID会返回。当然,如果我使用我的,它就有效。

如果这个相同的范围名称确实存在App-Only范围与Delegate范围,那么如何指定?

我是否需要在O365中为我的管理员用户指定一些内容,以便它拥有权利?我可以在O365中删除或创建具有该帐户的任何用户,因此它似乎应该具有所需的内容。

由于

2 个答案:

答案 0 :(得分:0)

因此,App-Only的流程略有不同。

首先,您不是在" https://login.microsoftonline.com/common/oauth2/v2.0/authorize"上对用户进行身份验证,而是在" https://login.microsoftonline.com/common/adminconsent"进行身份验证。

其次,传入相同的参数减去"范围"。范围取决于您在apps.dev.microsoft.com上注册的应用程序中定义的应用程序权限。

第三,当您收到回叫时,您将没有"代码"用于去检索您的访问和刷新令牌。相反,您将收到一个"租户"财产和" admin_consent"属性。 " admin_consent"会告诉你你是否拥有这些权利。

第四,在请求您的访问令牌时,您将不会提供"范围"或"代码"参数,但你会提供一个"资源"参数,值为" https://graph.microsoft.com"。

最后,您联系以获取令牌的网址将更改为" https://login.microsoftonline.com/common/oauth2/v2.0/token"到" https://login.microsoftonline.com/ {tenant} / oauth2 / token",其中{tenant}将是返回的值。

请注意,在" v2.0"不见了。这不是一个错字。如果您不从路径中删除它,您将收到有关无效或缺失"范围"的错误。参数。

成功返回访问和刷新令牌后,流程似乎遵循正常的委派访问权限。

以下是微软给我的一些链接,以及他们帮助解决这个问题的指导。

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes#using-the-admin-consent-endpoint

https://developer.microsoft.com/en-us/graph/docs/authorization/app_only

(非常感谢杰夫在微软)

答案 1 :(得分:0)

最新文档在这里:https://docs.microsoft.com/en-us/graph/auth-v2-service

我遵循了它,并且能够在Calendars.ReadWrite的许可下读写其他人的日历。