2016-08-04 45 views
0

Ich habe, was ein sehr einfaches Problem sein sollte, zu lösen, aber ich kann nicht herausfinden, was schief läuft.Dropbox API PHP - Benachrichtigung Anfrage ist leer

Ich habe gerade ein Projekt gestartet, um die neue Dropbox API v2 zu verwenden, um Benachrichtigungen für Datei-/Ordneränderungen zu erhalten. Befolgen Sie die Schritte in der documentation zur Verfügung gestellt, aber ich laufe auf ein Problem auf Anhieb.

Ich habe den Webhook verifiziert, und ich bekomme eine POST-Anfrage von Dropbox jedes Mal, wenn eine Datei geändert wird, aber die POST-Anfrage enthält nur ein leeres Array. Der Code ist einfach, wie ich gerade das Projekt begonnen haben:

// USED for initial verification 
/* 
$challenge = $_GET['challenge']; 
echo $challenge; 
*/ 

$postData = $_POST; 

$post_dump = print_r($postData, TRUE); 
$fpost = fopen('postTester.txt', 'w'); 
fwrite($fpost, $post_dump); 
fclose($fpost); 

$postData ist mit sizeOf()0 ein leeres Array.

Irgendwelche Ideen?

Hier ist der aktualisierte Code mit der Lösung. Sehr einfache Lösung.

$postData = file_get_contents("php://input"); 

$post_dump = print_r($postData, TRUE); 
$fpost = fopen('postTester.txt', 'w'); 
fwrite($fpost, $post_dump); 
fclose($fpost); 

Antwort

2

Ich glaube, das liegt daran, dass $_POST nur für application/x-www-form-urlencoded oder multipart/form-dataContent-Type s ist. Die von Dropbox Webhooks gelieferte Nutzlast ist application/json.

Es sieht so aus, als ob Sie stattdessen $HTTP_RAW_POST_DATA oder php://input verwenden möchten, abhängig von Ihrer PHP-Version.

Sie können die rohe Nutzlast und dann json_decode erhalten, um die strukturierten Informationen zu erhalten.

+0

Das hat es behoben. Vielen Dank! – Samson