- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的部门内,我们有一个经典的 ASP 网站,该网站一直在使用我们公司的 Google 帐户进行身份验证并将事件插入到我们的 Google 日历中。该组织刚刚从 Google 切换到 Office 365,我正尝试将代码切换为使用 Outlook,但没有成功。
我可以使用访问 token 获取 https://graph.microsoft.com/v1.0/me
并查看基本配置文件,但是如果我尝试读取日历事件或发送电子邮件我看到消息:
"error": {
"code": "NoPermissionsInAccessToken",
"message": "The token contains no permissions, or permissions can not be understood."
我使用个人 Microsoft 帐户创建了一个 Azure 帐户并添加了一个应用程序。我将我的同事和公司帐户添加为 guest 用户。我设置了所需的权限并获得了管理员同意:
然后我按照 this page 上的步骤操作.
我首先访问https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/authorize
,包括以下查询项:
client_id={client id}
response_type=code
redirect_uri={our URL}
response_mode=query
scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
state={number}
这会返回一个“代码”,我将其发送到 https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/token
,包括:
grant_type=authorization_code
client_secret={client secret}
client_id={client id}
scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
state={same number as above}
redirect_uri={same URL as above}
code={code returned from /authorize}
这将返回 ID、访问和刷新 token 。如果我使用 https://jwt.ms/ 解码访问 token , 它似乎包含适当的受众和范围:
"aud": "https://graph.microsoft.com"
"scp": "Calendars.ReadWrite email Mail.Send openid profile User.Read"
...虽然我注意到没有“角色”条目,但我在某些文档中看到了这一点。这是个问题吗?
然后我使用以下 header 将访问 token 发送到 https://graph.microsoft.com/v1.0/me
:
"Authorization", "Bearer {access token}"
"Host", "graph.microsoft.com"
"Content-Type", "application/json"
"Prefer", "outlook.timezone Europe/London"
这将返回我的电子邮件地址等,但是如果我将 URL 更改为其他任何内容,例如 /me/photo/$value
、/me/calendar/事件
,或尝试发送一封电子邮件,我被告知 token 中没有权限。
我看到还有其他类似的问题,但它们主要针对 client_credentials
流程(我不确定这有什么区别),而且没有一个答案能帮助我解决我的问题.
有人可以让我知道我是否明显遗漏了什么 - 或者我以错误的方式在客户端访问 Graph 数据吗?在 Google 上看起来很简单,但我发现 Microsoft 文档和示例不够详细。
最佳答案
添加 guest 用户是没有意义的。
您所做的是使用您的个人 Microsoft 帐户获得 Azure AD 的管理员同意。
您实际需要做的是获得目标 Azure AD/O365 租户的管理员许可。
构建同意链接如下:
https://login.windows.net/{tenant ID of the target Azure AD}/oauth2/authorize?response_type=id_token&client_id={client ID}&redirect_uri={reply url}&response_mode=form_post&nonce=a4014117-28aa-47ec-abfb-f377be1d3cf5&resource=https://graph.microsoft.com&prompt=admin_consent
在浏览器中访问它并使用目标 Azure AD 的管理员帐户登录。
另一个问题是您正在使用 Get access on behalf of a user .因此,您必须在 Azure AD 应用中分配委派权限而不是应用程序权限。
关于azure-active-directory - Microsoft Graph读取日历或发送邮件时返回 "NoPermissionsInAccessToken"如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719480/
我想要做的是创建一个简单的 Microsoft Azure 应用程序,用于使用 Microsoft Graph 获取所有联系人。我想我明白它应该如何工作,但由于我未能真正使其工作,我需要一些帮助。 我
在我们的部门内,我们有一个经典的 ASP 网站,该网站一直在使用我们公司的 Google 帐户进行身份验证并将事件插入到我们的 Google 日历中。该组织刚刚从 Google 切换到 Office
我追求的目标是我希望在没有任何人工交互的情况下从 Outlook 365 获取电子邮件。所以我尝试使用 MS Graph REST API 和 Java。为了获取访问 token ,我使用: reso
我正在尝试使用 https://graph.microsoft.com/v1.0/me/photo/$value 端点并按照 these 获取用户的个人资料照片指示。在我们的 React 应用程序中,
我是一名优秀的程序员,十分优秀!