![](/img/trans.png)
[英]How to create a folder without an error using Microsoft Graph API?
[英]create folder with microsoft graph api
我正在嘗試使用微軟圖形 API 創建文件夾。 在 microsoft graph explorer 中,一切正常,但我的 php 代碼返回錯誤:
$name = 'newFolder'; $access_token = '123..';
$link = 'https://graph.microsoft.com/v1.0/me/drive/root/children';
$data = array(
"name" => $name,
"folder" => array()
);
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$access_token, 'Content-Type: application/json'));
curl_setopt($curl,CURLOPT_POSTFIELDS, $data);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out = curl_exec($curl);
$codeCurl = curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
這是 '$out' 的響應: 400 BadRequest,無法讀取 JSON 請求負載。 請確保已設置 Content-Type 標頭且有效負載為有效的 JSON 格式。 我不明白,怎么了? json 數據是正確的,標題也是..
微軟圖形 API 文檔顯示了這個創建文件夾的示例請求:
POST /me/drive/root/children
Content-Type: application/json
{
"name": "New Folder",
"folder": { },
"@microsoft.graph.conflictBehavior": "rename"
}
要獲得請求的這一部分: "folder": { }
您可以將"folder" => new stdClass()
放入您的 $data 數組或保留此"folder" => array()
並使用json_encode($data, JSON_FORCE_OBJECT)
。 如果您使用 JSON_FORCE_OBJECT,所有數組都將被編碼為對象。 我遇到了同樣的問題,但響應中的錯誤有點不同:有效負載中的屬性文件夾具有與 schema 不匹配的值。 我正在使用"folder" => new stdClass()
並且它工作正常。
正確的方法是使用“json_encode()”以正確的格式放置數據。 文件夾的正確格式是$folderParameters = ["name" => $name, "folder" => ["childCount" => '0']];
(感謝使用 API 在 OneDrive 上創建文件夾)
正確的代碼是:
$link = 'https://graph.microsoft.com/v1.0/me/drive/root/children';
$data = [
"name" => $name,
"folder" => ["childCount" => '0']
];
$headers = [
'Authorization: Bearer '.$access_token,
'Content-Type: application/json'
];
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl,CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out = curl_exec($curl);
$codeCurl = curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.