【问题标题】:Error when using Facebook's PHP SDK to send notification使用 Facebook 的 PHP SDK 发送通知时出错
【发布时间】: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.php105

我确信 ID 数组工作正常,因为当我从消息模板中删除 $senderid 时,一切工作正常。这并不理想,因为我想告诉击败他们的玩家,而不是给他们一个信息,例如“你刚刚被击败”。我想在消息/模板中包含发件人的姓名,但是上面 Facebook 文档中给出的方法不起作用,也许在 Facebook 的 Graph API Explorer 中输入时只能使用@[12425232] 方法?

我非常感谢任何人在这个问题上能给我的任何帮助。 提前谢谢!

【问题讨论】:

  • 首先,您应该在代码中正确地catch 异常,以免它们导致致命错误。其次,该异常消息听起来像是与 API 的连接可能存在一般问题,而不是好像它特定于该特定请求。

标签: php facebook facebook-graph-api facebook-php-sdk


【解决方案1】:

请使用 GET 或 REQUEST 而不是 POST 获取数据和 senderid

【讨论】:

  • 嗨@yagnesh,你能解释一下使用POST方法有什么问题吗?我正在将数据从 Javascript 发送到 PHP 文件,所以我使用的是 POST,该方法有什么问题?
  • 好的 nw 然后你将使用 try 和 catch 语句来找出你有什么问题 Like try { Notification Code }} catch (Facebook\Exceptions\FacebookSDKException $e) { echo "
    " .$e->getMessage(); } 在你的 foreach 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多