【发布时间】:2016-09-05 15:01:45
【问题描述】:
我正在使用 PHP 发送 Facebook 通知,但遇到了一个问题,我似乎无法使用 Facebook 的文档解决。
通知通知某人他们的朋友在游戏中击败了他们,这是发送消息的 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');
}
?>
此代码获取一组 ID 号 ($data) 并向每个人发送通知。 senderid 是发件人的 ID,根据此处的文档:https://developers.facebook.com/docs/games/services/appnotifications 键入 @[12625234523] just beat you! 之类的内容应自动将拥有该 ID 的人的姓名放在适当的位置,因此通知应显示为“ John Doe 刚刚打败了你”。
但这对我不起作用。我确定发件人的 ID 已成功发布到 PHP 文件,因为当我 echo $senderid 时它出现在控制台中。当我在请求的“模板”部分手动输入发件人的 ID 时,我在控制台中遇到了同样的错误。错误是:
致命错误:未捕获的异常“Facebook\Exceptions\FacebookServerException”,消息为“发生未知错误。”在 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Exceptions/FacebookResponseException.php:105 堆栈跟踪:
0 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/FacebookResponse.php(210):Facebook\Exceptions\FacebookResponseException::create(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), '{"error":{"混乱...', 500, 数组)
4 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Facebook.php(504): Facebook\FacebookClient->sendRequest(Object(Facebook\FacebookRequest))
5 /home/mywebsite/public_ht 在 /home/mywebsite/public_html/Games/Barre/facebook-sdk-v5/Exceptions/FacebookResponseException.php 行 105
我确信 ID 数组工作正常,因为当我从消息模板中删除 $senderid 时,一切工作正常。这并不理想,因为我想告诉击败他们的玩家,而不是给他们一个信息,例如“你刚刚被击败”。我想在消息/模板中包含发件人的姓名,但是上面 Facebook 文档中给出的方法不起作用,也许在 Facebook 的 Graph API Explorer 中输入时只能使用@[12425232] 方法?
我非常感谢任何人在这个问题上能给我的任何帮助。 提前谢谢!
【问题讨论】:
-
首先,您应该在代码中正确地catch 异常,以免它们导致致命错误。其次,该异常消息听起来像是与 API 的连接可能存在一般问题,而不是好像它特定于该特定请求。
标签: php facebook facebook-graph-api facebook-php-sdk