簡體   English   中英

使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM