Php &引用;“拒绝访问”;通过Microsoft Graph创建文件夹时
尝试在SharePoint网站中创建文件夹时,出现以下错误:Php &引用;“拒绝访问”;通过Microsoft Graph创建文件夹时,php,sharepoint,microsoft-graph-api,microsoft-graph-sdks,Php,Sharepoint,Microsoft Graph Api,Microsoft Graph Sdks,尝试在SharePoint网站中创建文件夹时,出现以下错误: { "error": { "code": "accessDenied", "message": "Access denied", "innerError": { "request-id": "61d3b5aa-857e-4ee2-9d0d-51d235ca7c5f", "date": "2020-05-18T06:31:54" } } } 注: 使用Microsoft
{
"error": {
"code": "accessDenied",
"message": "Access denied",
"innerError": {
"request-id": "61d3b5aa-857e-4ee2-9d0d-51d235ca7c5f",
"date": "2020-05-18T06:31:54"
}
}
}
注:
msgraphsdkphp
发出请求Sites.Manage.All Delegated.
Sites.Read.All Delegated.
Sites.ReadWrite.All Delegated.
OAUTH_SCOPES='openid profile offline_access user.read calendars.readwrite mail.readwrite mail.send'
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}
这里出现错误的原因是什么?您可能已经请求了这些权限,但在收到管理员的“同意”之前,这些权限将不会被激活 AAD有两种形式的“同意”:管理员和用户。如果作用域需要管理员同意,那么您需要先获得管理员同意,然后才能获得用户同意。所有
站点。*。您列出的所有范围都需要管理员同意
您可以从中找到有关同意(以及如何获得同意)的更多详细信息。您需要构建特殊的url并将其交给全局管理员以获得同意。
下面是一个例子:
完成同意后,可能需要24小时才能获得许可。
此外,您可以在此处检查oauth令牌:您需要在oauth\u 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 …&客户端id=…
PS:上述范围都不需要。@kerbholz谢谢,我使用msgraph sdk php发送请求。也许这是相关的。你能看一看到底是什么被发送下来的吗?看看这个:据我所知,我必须发出一个get请求并请求额外的特权?有没有一种方法只允许管理员用户拥有所有权限?作为身份验证流的一部分,您必须请求所需的所有作用域。如果进行身份验证的用户是全局管理员,则他们可以同意任何范围(即管理员不需要管理员同意)。