Facebook应用程序通知 - 只能提供给某些用户

时间:2014-05-27 18:34:43

标签: facebook-graph-api

我在php中创建了一个成功发布通知到我的应用程序的脚本,但奇怪的是它只适用于某些帐户?

我尝试用curl创建它,但是这不起作用(如果我正确发布,Facebook返回空白结果,但任何错误都给出了带有错误描述的JSON字符串 - 令人费解)。无论如何,我有一个javascript,只为每个用户获得ECHO'ed然后我访问浏览器中的.php页面以发送通知。这有效,但仅适用于某些用户。

JS看起来像:

echo "
        <script type=\"text/javascript\">

        var postURL = \"https://graph.facebook.com/\" + $id + \"/notifications\";
        var postString = \"access_token=[myaccesstoken for my app]&href=&template=Your card registration has been processed. Click here to view your membership.\";

$.ajax({ 
            type        : \"POST\",
            url         : postURL, 
            data        : postString, 
            success     : function(data) {
            }
        });


        </script>
        Notified $id<br>
        ";

这适用于每行打印“Notified(id)”。我根本没有看到任何模式。它似乎只是随机失败而不是失败。失败意味着POST响应是400错误请求,并且没有发送通知。 200 OK,用户收到通知。

有人想详细说明这个吗?

1 个答案:

答案 0 :(得分:0)

好的 - 在经过大量激烈的反复试验后,我得出的结论是帖子本身出错了。我尝试使用一个简单的HTML帖子,这对每个人都有用。然后我跳回到cURL,但无论我做了什么,都失败了。然后我偶然发现了这个功能,这对所有用户都很有效:

function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
if ($optional_headers!== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
} 

使用类似,其中$ id是for循环的用户:

$url = "https://graph.facebook.com/" . $id . "/notifications";
$data = "access_token=myaccesstoken&template=Finally this works!";
echo do_post_request($url,$data);
热潮,JSON的成功归来。我不知道为什么cURL没有做到这一点(我尝试了很多)。