"Access denied" 通过 Microsoft Graph 创建文件夹时
"Access denied" When making a folder via Microsoft Graph
尝试在 SharePoint 站点中创建文件夹时出现以下错误:
{
"error": {
"code": "accessDenied",
"message": "Access denied",
"innerError": {
"request-id": "61d3b5aa-857e-4ee2-9d0d-51d235ca7c5f",
"date": "2020-05-18T06:31:54"
}
}
}
备注:
- 使用 Microsoft Graph 资源管理器时,请求有效。
- 对 Graph 端点的其他请求有效。
- 我用
msgraph-sdk-php
提出请求。
这通常与权限有关,但我的用户具有以下权限
天蓝色的权限设置:
Sites.Manage.All Delegated.
Sites.Read.All Delegated.
Sites.ReadWrite.All Delegated.
里面my.env我有以下权限:
OAUTH_SCOPES='openid profile offline_access user.read calendars.readwrite mail.readwrite mail.send'
Url:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?%20state={someState}%20&scope=openid%20profile%20offline_access%20user.read%20calendars.readwrite%20mail.readwrite%20mail.send%20&response_type=code&approval_prompt=auto&redirect_uri=http://localhost:8080/office365/token/store%20&client_id={myclientId}
是什么导致了这里的错误?
您可能已经请求了这些权限,但在您从管理员那里收到 "consent" 之前,它们不会被激活。
AAD 有两种形式 "consent":Admin 和 User。如果范围需要管理员同意,那么您需要先获得该同意 ,然后才能 获得用户同意。您列出的所有 Sites.*.All
范围都需要管理员同意。
找到更多关于同意(以及如何获得)的详细信息
您需要构建特殊的 url 并将其交给全局管理员同意。
这是示例:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-admin-consent
完成同意后,最多可能需要 24 小时才能获得许可。
此外,您可以在此处检查 oauth 令牌:https://jwt.io/
您需要在 OAUTH_SCOPES 变量中添加一个或多个所需范围(Sites.Read.All、Sites.ReadWrite.All、Sites.Manage.All):
OAUTH_SCOPES='Sites.Manage.All ...'
这样你的授权URL就是这样建立的:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?scope=Sites.Manage.All ...&client_id=...
PS: None 的上述范围需要 admin consent.
尝试在 SharePoint 站点中创建文件夹时出现以下错误:
{
"error": {
"code": "accessDenied",
"message": "Access denied",
"innerError": {
"request-id": "61d3b5aa-857e-4ee2-9d0d-51d235ca7c5f",
"date": "2020-05-18T06:31:54"
}
}
}
备注:
- 使用 Microsoft Graph 资源管理器时,请求有效。
- 对 Graph 端点的其他请求有效。
- 我用
msgraph-sdk-php
提出请求。 这通常与权限有关,但我的用户具有以下权限 天蓝色的权限设置:
Sites.Manage.All Delegated. Sites.Read.All Delegated. Sites.ReadWrite.All Delegated.
里面my.env我有以下权限:
OAUTH_SCOPES='openid profile offline_access user.read calendars.readwrite mail.readwrite mail.send'
Url:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?%20state={someState}%20&scope=openid%20profile%20offline_access%20user.read%20calendars.readwrite%20mail.readwrite%20mail.send%20&response_type=code&approval_prompt=auto&redirect_uri=http://localhost:8080/office365/token/store%20&client_id={myclientId}
是什么导致了这里的错误?
您可能已经请求了这些权限,但在您从管理员那里收到 "consent" 之前,它们不会被激活。
AAD 有两种形式 "consent":Admin 和 User。如果范围需要管理员同意,那么您需要先获得该同意 ,然后才能 获得用户同意。您列出的所有 Sites.*.All
范围都需要管理员同意。
您需要构建特殊的 url 并将其交给全局管理员同意。 这是示例:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-admin-consent
完成同意后,最多可能需要 24 小时才能获得许可。 此外,您可以在此处检查 oauth 令牌:https://jwt.io/
您需要在 OAUTH_SCOPES 变量中添加一个或多个所需范围(Sites.Read.All、Sites.ReadWrite.All、Sites.Manage.All):
OAUTH_SCOPES='Sites.Manage.All ...'
这样你的授权URL就是这样建立的:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?scope=Sites.Manage.All ...&client_id=...
PS: None 的上述范围需要 admin consent.