2017-06-22 4 views
0

Ich versuche, Ordner zu erstellen, mit Microsoft Graph API. In Microsoft Graph Explorer, alle arbeiten gut, aber mein PHP-Code einen Fehler zurück:erstellen Ordner mit Microsoft Graph API

$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); 

dies ist die Antwort von '$ out': 400 BadRequest, kann nicht JSON Anfrage Nutzlast lesen. Stellen Sie sicher, dass der Content-Type-Header festgelegt ist und die Nutzdaten das gültige JSON-Format aufweisen. Ich kann nicht verstehen, was falsch? JSON-Daten sind korrekt, Header auch ..

Antwort

0

Der richtige Weg ist die Verwendung von "json_encode()", um Daten in einem richtigen Format zu setzen. Und richtige Format für den Ordner war $folderParameters = ["name" => $name, "folder" => ["childCount" => '0']]; (danken Create folder on OneDrive with API)

Der richtige Code ist:

$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); 
Verwandte Themen