我在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,用户收到通知。
有人想详细说明这个吗?
答案 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没有做到这一点(我尝试了很多)。