我尝试使用CakePHP在我的团队的Sharepoint文件夹中创建一个文件夹,但它显示一个错误。我尝试了几种方法来发布和调用API,但都不起作用。我的API是
https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-name}:/children
我在下面构建了这个函数。
private function createNewFolder($folder_name)
{
try {
$http = new Client();
$accessToken = $this->getRequest()->getSession()->read('accessToken');
$data = [
"name" => $folder_name,
"folder" => "{ }",
"@microsoft.graph.conflictBehavior" => "rename"
];
$url = "https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-name}:/children";
$headers = [
'headers' => ['Authorization' => 'Bearer '. $accessToken, 'Content-Type' => 'application/json']
];
return $http->post($url, json_encode($data), $headers)->getJson();
} catch
(\Exception $e) {
return $e->getMessage();
}
}
它显示一个错误,
“装载中的内容文件夹有与结构描述不相符的值。”
虽然它的作品使用 Postman ,但它不工作的网站.
我已经允许Active Directory中包含Files.ReadWrite, Files.ReadWrite.All, Sites.ReadWrite.All
的权限。
1条答案
按热度按时间9jyewag01#
对于任何其他在这方面挣扎的人来说,解决方案非常简单,Graph API不喜欢PHP编码JSON的默认方式:
将输出:
这就是SDK的编程方式。问题是Graph API不喜欢用方括号来表示空对象。它需要花括号。在PHP中,可以通过在JSON编码中添加一个标志来实现这一点:
这将输出:
这是Graph API想要的格式。但是由于JSON编码是由SDK自动完成的,没有标记,我们必须通过自己对数组进行编码来覆盖它: