如何在不超过api配额的情况下将多个页面作为一个管理员用户管理?

时间:2013-03-07 17:27:04

标签: facebook-graph-api access-token facebook-page facebook-access-token

我的客户公司为数千家小企业管理Facebook页面。我们构建了一个Facebook应用程序,供我们的客户简化流程,并允许他们一次快速地对多个/所有页面进行更改。

出于各种商业原因,我们的客户公司只为其中一名员工添加了管理员(以及小企业主)。此用户帐户已添加我们的应用程序,我们正在抓取页面令牌并使用这些页面令牌来管理页面(更改联系信息,添加选项卡,获取墙上帖子)。我们遇到了一些非常苛刻的api请求限制。现在我们每分钟只能添加3个新的Facebook页面(我认为这可能需要6-10次api调用才能完成所有这些)。

我已经看到人们估计一个访问令牌允许大约600个请求/ 600秒但我认为,因为我们使用页面令牌完成了大部分工作,所以我们的操作不会计入单个api限制

有没有人确定api限制是否基于个人令牌,即使它们在技术上属于同一个用户?考虑到我无法在这些页面中添加更多管理员,有什么办法可以解决这个限制吗?

3 个答案:

答案 0 :(得分:2)

Actuelly很简单,你只需要为PAGE而不是用户请求访问令牌。

    $mQuery=array('access_token'=> 'SELECT access_token FROM page WHERE page_id = 'page_id,    
                  'album_id'=> 'SELECT object_id FROM album WHERE owner = '.page_id.' AND name = "Timeline Photos"');
    $multiQueryResult = $facebook->api(array('method'=>'fql.multiquery', 'queries'=>$mQuery));

第一行将为您提供该用户的访问令牌,第二行只是一个使用多查询的示例,并减少您的通话。

您可以在多个查询中使用最多50个查询

如果您想对页面执行多项操作,则可以使用批处理请求。这是一个发布状态的示例,您可以添加更多,直到同一个呼叫中的50个批处理请求。

$v['body']['message']=htmlspecialchars_decode($v['message'], ENT_QUOTES);
$v['body']['scheduled_publish_time']=strtotime($v['scheduled_publish_time']);
$v['body']['published']='false';
$v['body']=http_build_query($v['body']);
$batch[]=$v;

try {
    $batchresult = $facebook->api("/?batch=".urlencode(json_encode($batch)), 'POST', array('access_token'=>$access_token));
} catch (FacebookApiException $e) {
    echo $e->getMessage(); 
}
echo $batchresult;

希望这有帮助。

答案 1 :(得分:2)

正如@JulioPopócatl所说,使用页面访问令牌(从长期用户令牌生成)可能是一个不错的选择。

这些页面访问权限一旦正确生成,它们将永不过期,因此您需要运行的查询数量至少少一个。

API请求限制适用于来自用户,页面,应用程序等的每个请求。无论请求的来源是什么,他们总是向Facebook架构提问。

Using batch requests is a good idea too,因为它会使用一个(或更少)请求获取多个数据,而不是单独发出每个请求。

答案 2 :(得分:-3)

  

我们正面临着一些非常苛刻的api请求限制。现在我们每分钟只能添加3个新的Facebook页面

我不认为这是一个“严厉”的限制。想象如果大量应用在几分钟内创建数百或数千个页面会发生什么......垃圾邮件垃圾邮件垃圾邮件!1

  

我已经看到人们估计一个访问令牌允许大约600个请求/ 600秒但我认为,因为我们使用页面令牌完成了大部分工作,所以我们的操作不会计入单个api限制

此限制仅基于App ID强制执行。 你正在使用API​​做什么以及谁(用户,页面)无关紧要。

  

有什么办法可以解决这个限制

在很短的时间内添加大量新页面对我来说听起来像垃圾邮件很多。我想不出一个的原因,为什么人们会想这样做。