Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;“拒绝访问”;通过Microsoft Graph创建文件夹时_Php_Sharepoint_Microsoft Graph Api_Microsoft Graph Sdks - Fatal编程技术网

Php &引用;“拒绝访问”;通过Microsoft Graph创建文件夹时

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

尝试在SharePoint网站中创建文件夹时,出现以下错误:

{
  "error": {
    "code": "accessDenied",
    "message": "Access denied",
    "innerError": {
      "request-id": "61d3b5aa-857e-4ee2-9d0d-51d235ca7c5f",
      "date": "2020-05-18T06:31:54"
    }
  }
}
注:

  • 使用Microsoft Graph Explorer时,请求有效
  • 对图形端点的其他请求也可以工作
  • 我使用
    msgraphsdkphp
    发出请求
  • 这通常与权限有关,但我的用户有以下几点 azure中设置的权限:

    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'
    
  • 网址:

     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请求并请求额外的特权?有没有一种方法只允许管理员用户拥有所有权限?作为身份验证流的一部分,您必须请求所需的所有作用域。如果进行身份验证的用户是全局管理员,则他们可以同意任何范围(即管理员不需要管理员同意)。