2016-05-10 3 views
0

Ich sende eine Facebook-Benachrichtigung mit PHP, aber ich habe ein Problem, das ich nicht mit den Facebook-Dokumenten lösen kann.Fehler bei der Verwendung von Facebooks PHP SDK zum Senden der Benachrichtigung

Die Benachrichtigung eine Person darüber informiert, dass ihr Freund sich in einem Spiel geschlagen hat, Dies ist der PHP-Code, der die Nachricht sendet:

<?php 

require_once __DIR__ . '/facebook-sdk-v5/autoload.php'; 

$fb = new Facebook\Facebook([ 
    'app_id' => '{123456789}', 
    'app_secret' => '{1a2b3c4d5f6g7h8i9j}', 
    'default_graph_version' => 'v2.3', 
    ]); 

//This is an array of ID numbers received from an Ajax post 
$data = json_decode(stripslashes($_POST['data'])); 
//This the ID number of the sender of the notifications 
$senderid = $_POST['senderid']; 
echo $senderid; 

    foreach($data as $d){ 
    $request = $fb->post('/'.$d.'/notifications', array('template' => '@['.$senderid.'] just beat you!'), '123456789|1a2b3c4d5f6g7h8i9j'); 
}  
?> 

Dieser Code eine Reihe von ID-Nummern nimmt ($data) und Senden die Benachrichtigung an jeden einzelnen. Die senderid ist die ID des Absenders, und entsprechend der Dokumentation hier: https://developers.facebook.com/docs/games/services/appnotifications Tippe etwas wie @[12625234523] just beat you! sollte automatisch den Namen der Person, die diese ID an Ort und Stelle, so die Meldung sollte etwas wie "John Doe nur dich schlagen" lesen .

Aber das funktioniert nicht für mich. Ich bin sicher, dass die ID des Absenders erfolgreich in der PHP-Datei veröffentlicht wird, da sie in der Konsole angezeigt wird, wenn ich echo $senderid bin. Und wenn ich die ID des Absenders manuell in den 'Vorlagen' Teil der Anfrage eintippe, bekomme ich den gleichen Fehler in der Konsole. Der Fehler ist:

Fatal error: abgefangene Ausnahme 'Facebook \ Ausnahmen \ FacebookServerException' mit der Meldung 'Ein unbekannter Fehler ist aufgetreten.' in /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Exceptions/FacebookResponseException.php:105 Stapelüberwachung:

0/home/mywebsite/public_html/Spiele/Barre/facebook-sdk-v5 /FacebookResponse.php(210): Facebook \ Ausnahmen \ FacebookResponseException :: create (Object (Facebook \ FacebookResponse))

1 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/FacebookResponse.php (255): Face \ FacebookResponse- > makeException()

2 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/FacebookResponse.php(82): Face \ FacebookResponse- > decodeBody()

3 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/FacebookClient.php(225): Book \ FacebookResponse- > __construct (Object (Face \ FacebookRequest), ‚{" Fehler ": { " Chaos ... ', 500, Array)

4 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Facebook.php(504): Facebook \ FacebookClient- > sendrequest (Object (Facebook \ FacebookRequest))

5/home/mywebsite/public_ht in /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Exceptions/FacebookResponseException.php on line

Ich bin sicher, dass das Array von IDs richtig funktioniert, da alles perfekt funktioniert, wenn ich die $senderid aus der Nachrichtenvorlage zu entfernen. Dies ist jedoch nicht ideal, da ich dem Spieler, der sie geschlagen hat, sagen möchte, anstatt ihnen eine Nachricht wie "Du bist gerade geschlagen worden" zu geben. Ich möchte den Namen des Absenders in die Nachricht/das Template einfügen, aber die oben im Facebook-Dokument angegebene Methode funktioniert nicht. Vielleicht ist es nur möglich, die Methode @[12425232] zu verwenden, wenn Sie in den Graph API Explorer von Facebook tippen.

Ich würde wirklich jede Hilfe schätzen, die mir jemand mit diesem Problem geben könnte. Vielen Dank im Voraus!

+0

Zunächst einmal sollten Sie richtig _catch_ Ausnahmen in Ihrem Code, so dass sie in fatalen Fehlern zur Folge haben. Zweitens klingt diese Ausnahmebedingungsnachricht eher so, als ob es ein allgemeines Problem mit der Verbindung zur API geben könnte, und nicht so, als ob sie spezifisch für diese spezielle Anfrage wäre. – CBroe

Antwort

0

Bitte verwenden Sie GET oder REQUEST statt POST für Daten und SenderID

+0

Hi @yagnesh, kannst du erklären, was mit der POST-Methode los ist? Ich sende Daten von Javascript in eine PHP-Datei, also verwende ich POST, was ist mit dieser Methode falsch? – Emily

+0

OK nw dann verwenden Sie versuchen und fangen Aussage für bekommen, was ist los mit Ihnen Wie versuchen Sie {Notification Code}} catch (Facebook \ Exceptions \ FacebookSDKException $ e) { echo "
". $ E-> getMessage(); } in Ihrer foreach – Yagnesh

Verwandte Themen