2016-05-10 5 views
0

Я отправляю уведомление Facebook с помощью PHP, но у меня возникла проблема, которую я не могу решить с помощью документов Facebook.Ошибка при использовании PHP SDK для отправки уведомлений

Уведомление сообщает человеку, что их друг обыграла их в игре, Это PHP код, который посылает сообщение:

<?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'); 
}  
?> 

Этот код берет массив идентификационных номеров ($data) и отправки уведомление каждому. senderid - это идентификатор отправителя, и в соответствии с документами здесь: https://developers.facebook.com/docs/games/services/appnotifications, набрав что-то вроде @[12625234523] just beat you!, следует автоматически поместить имя человека, которому принадлежит этот идентификатор, поэтому в уведомлении должно быть написано что-то вроде «Джон Доу просто избил тебя», ,

Но это не работает для меня. Я уверен, что идентификатор отправителя успешно отправляется в файл PHP, потому что он отображается в консоли, когда я echo $senderid. И когда я вводим идентификатор отправителя вручную в часть «шаблона» запроса, я получаю ту же ошибку в консоли. Ошибка:

Фатальная ошибка: Uncaught исключение «Facebook \ Исключения \ FacebookServerException» с сообщением "Неизвестная ошибка произошла. в /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Exceptions/FacebookResponseException.php:105 трассировки стека:

0/Главная/МойВебСайт/public_html/Игры/Барре/facebook-СДК-v5 /FacebookResponse.php(210): Facebook \ Исключения \ FacebookResponseException :: создать (Object (Facebook \ FacebookResponse))

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

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

3 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/FacebookClient.php(225): Facebook \ FacebookResponse- > __construct (Object (Facebook \ FacebookRequest), «{" ошибка ": { " беспорядок ... ', 500, массив)

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

5/дома/МойВебСайт/public_ht в /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Exceptions/FacebookResponseException.php на линии

Я уверен, что массив идентификаторов работает правильно, так как все прекрасно работает, когда я удалить $senderid из шаблона сообщения. Это не идеально, хотя я хотел бы рассказать игроку, который их избил, вместо того, чтобы дать им сообщение вроде «Тебя только что избили». Я хотел бы указать имя отправителя в сообщении/шаблоне, но метод, указанный в документе Facebook выше, не работает, возможно, только можно использовать метод @[12425232] при вводе в Google API API графиков?

Я бы очень признателен за любую помощь, которую любой может дать мне с этой проблемой. Спасибо заранее!

+0

Прежде всего, вы должны правильно _catch_ исключений в коде, так что они не приводят к фатальным ошибкам. Во-вторых, это сообщение об исключении звучит скорее, как, может быть, общая проблема с подключением к API, а скорее не так, как если бы он был специфичен для этого конкретного запроса. – CBroe

ответ

0

Пожалуйста, используйте GET или REQUEST вместо POST для передачи данных и SenderId

+0

Привет @yagnesh, можете ли вы объяснить, что не так с использованием метода POST? Я отправляю данные из Javascript в PHP-файл, поэтому я использую POST, что не так с этим методом? – Emily

+0

Ok nw, то вы будете использовать инструкцию try и catch для получения того, что с вами не так. Как try {Notification Code}} catch (Facebook \ Exceptions \ FacebookSDKException $ e) { echo "
". $ E-> getMessage(); } в вашем foreach – Yagnesh

Смежные вопросы