Facebook graph api 限制API上的帖子数量
我想建立一个FB应用程序,将消息发布到那些注册该应用程序的人的墙上。 有两种设置:Facebook graph api 限制API上的帖子数量,facebook-graph-api,limits,Facebook Graph Api,Limits,我想建立一个FB应用程序,将消息发布到那些注册该应用程序的人的墙上。 有两种设置: 给许多人的一条信息(一条-多条,一天可能出现几次) 许多特定于用户的按摩(1-1次,但其中许多可能会为每个用户每天进行几次) 总而言之;一个用户每天可以在他的墙上得到一些不同的更新,但这可能会影响许多用户(这几乎就是我想法的全部要点) Facebook会允许我这么做到什么程度,而且不会认为我会发垃圾邮件 附言: 我是随这篇文章来的,这篇文章似乎还没有解决…: 还有这篇文章,它没有让我清楚我的想法是否应该开始;)
您可以使用Facebook批处理API来实现您的目的 您可以通过以下网址获得有关Facebook批量请求的更多信息:
我在我的网站上开发了一个应用程序,可以向多个facebook用户发布链接、消息等。我用过:- 如果($user){ //继续,知道您有一个具有有效会话的登录用户 //============使用PHP-SDK通过Facebook Graph API批处理请求======== //将方法调用保存到数组中 $queries=数组( 数组('method'=>'GET','relative_url'=>'/'.$user), 数组('method'=>'GET','relative_url'=>'/'.$user./friends'), 数组('method'=>'GET','relative_url'=>'/'.$user./groups'), 数组('method'=>'GET','relative_url'=>'/'.$user./likes'), ))
// POST your queries to the batch endpoint on the graph.
try{
$batchResponse = $facebook->api('?batch='.json_encode($queries), 'POST');
}catch(Exception $o){
error_log($o);
}
//Return values are indexed in order of the original array, content is in ['body'] as a JSON
//string. Decode for use as a PHP array.
$user_info = json_decode($batchResponse[0]['body'], TRUE);
$friends_list = json_decode($batchResponse[1]['body'], TRUE);
$groups = json_decode($batchResponse[2]['body'], TRUE);
$pages = json_decode($batchResponse[3]['body'], TRUE);
//============使用PHP-SDK通过Facebook Graph API批处理请求=====
if(isset($_POST['submit_x'])){
if($_POST['message'] || $_POST['link'] || $_POST['picture']) {
$body = array(
'message' => $_POST['message'],
'link' => $_POST['link'],
'picture' => $_POST['picture'],
'name' => $_POST['name'],
'caption' => $_POST['caption'],
'description' => $_POST['description'],
);
$batchPost=array();
$i=1;
$flag=1;
foreach($_POST as $key => $value) {
if(strpos($key,"id_") === 0) {
$batchPost[] = array('method' => 'POST', 'relative_url' => "/$value/feed", 'body' => http_build_query($body));
if($i++ == 50) {
try{
$multiPostResponse = $facebook->api('?batch='.urlencode(json_encode($batchPost)), 'POST');
}catch(FacebookApiException $e){
error_log($e);
echo("Batch Post Failed");
}
$flag=0;
unset($batchPost);
$i=1;
}
}
}
if(isset($batchPost) && count($batchPost) > 0 ) {
try{
$multiPostResponse = $facebook->api('?batch='.urlencode(json_encode($batchPost)), 'POST');
}catch(FacebookApiException $e){
error_log($e);
echo("Batch Post Failed");
}
$flag=0;
}
}
else {
$flag=2;
}
}
}
?>我以前没有见过批处理APi,这是一个很棒的特性!根据它目前的限制是50。假设我有1.000个不同的用户,我将不得不将发布分为20个请求(尽可能短的“间隔”)。这会成为一个问题吗?我不认为这会成为一个问题。。您可以使用20个请求向1000个用户发布。。但请始终记住,不要向用户发送垃圾邮件。。在我提到的博客文章中,你可以找到关于这个问题的更多信息。事实上,帖子中的脚本会调用多个批处理API来发布给50多个好友。在我的例子中,所有用户(至少)都不是彼此相关的。我只需要发一堆不同的ID。据英国《每日电讯报》报道,你可以在600秒内拨打600个电话(正如他们在2010/2011年写的那样)。这意味着理论上一个人可以在10分钟内发50*600=30000篇帖子……天哪!用户之间不需要相互关联。。access_token={access_token_FOR_ID1}因此被使用。。如果用户彼此相关,则无需为每个呼叫明确提供访问令牌。请编辑您的答案并格式化代码以使其可读。
if(isset($_POST['submit_x'])){
if($_POST['message'] || $_POST['link'] || $_POST['picture']) {
$body = array(
'message' => $_POST['message'],
'link' => $_POST['link'],
'picture' => $_POST['picture'],
'name' => $_POST['name'],
'caption' => $_POST['caption'],
'description' => $_POST['description'],
);
$batchPost=array();
$i=1;
$flag=1;
foreach($_POST as $key => $value) {
if(strpos($key,"id_") === 0) {
$batchPost[] = array('method' => 'POST', 'relative_url' => "/$value/feed", 'body' => http_build_query($body));
if($i++ == 50) {
try{
$multiPostResponse = $facebook->api('?batch='.urlencode(json_encode($batchPost)), 'POST');
}catch(FacebookApiException $e){
error_log($e);
echo("Batch Post Failed");
}
$flag=0;
unset($batchPost);
$i=1;
}
}
}
if(isset($batchPost) && count($batchPost) > 0 ) {
try{
$multiPostResponse = $facebook->api('?batch='.urlencode(json_encode($batchPost)), 'POST');
}catch(FacebookApiException $e){
error_log($e);
echo("Batch Post Failed");
}
$flag=0;
}
}
else {
$flag=2;
}
}