我的客户公司为数千家小企业管理Facebook页面。我们已经为我们的客户构建了一个Facebook应用程序,以简化流程,并允许他们快速地一次性更改许多/所有页面。
无论出于何种业务原因,我们的客户公司只为每个页面添加了一名员工作为管理员(与小企业主一起)。这个用户帐户已经添加了我们的应用程序,我们正在抓取页面令牌,并使用这些页面令牌来管理页面(更改联系信息,添加选项卡,获取墙上的帖子)。我们遇到了一些非常苛刻的api请求限制。现在我们每分钟只能添加3个新的Facebook页面(我认为这可能需要6-10个api调用)。
我见过有人估计,一个访问令牌允许600个请求/600秒,但我认为,由于我们使用页面令牌做大部分工作,我们的操作不会计入单个api限制。
有没有人知道api限制是否基于单个令牌,即使它们在技术上属于同一用户?考虑到我不能向这些页面添加更多的管理员,我有没有办法绕过这个限制?
发布于 2013-03-23 18:53:47
实际上,这很简单,你只需要请求页面的访问令牌,而不是用户。
$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));第一行将获得该用户的访问令牌,第二行只是使用multiquery的一个示例,并减少您的调用。
在一个多查询中最多可以使用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;希望这能有所帮助。
发布于 2013-04-17 19:37:45
正如@Julio Popócatl所提到的,使用页面访问令牌(从长期的用户令牌生成)可能是一个很好的选择。
这些页面访问令牌一旦正确生成,它们将永远不会过期,因此您至少需要少运行一个查询。
API请求限制适用于来自用户、页面、应用程序的每个请求。无论请求的来源是什么,他们总是向Facebook模式提出请求。
Using batch requests is a good idea too,因为它将通过一个(或更少)请求获取多个数据,而不是单独发出每个请求。
发布于 2013-03-08 02:13:23
我们遇到了一些非常苛刻的
请求限制。现在我们一分钟只能添加3个新的Facebook页面
我根本不认为这是一个“苛刻”的限制。想象一下,如果大量的应用程序在几分钟内创建数百或数千个页面,会发生什么……垃圾邮件垃圾邮件!!1
我看到有人估计,一个访问令牌允许600个请求/600秒,但我认为,由于我们使用页面令牌做了大部分工作,我们的操作不会计入单个api限制。
该限制仅基于应用程序ID强制执行。您到底在使用API做什么以及作为谁(用户、页面)并不重要。
有什么办法可以绕过这个限制吗?
在很短的时间内添加大量的新页面对我来说确实像垃圾邮件,很多。我想不出一个好的理由为什么一个人会想要这样做。
https://stackoverflow.com/questions/15277790
复制相似问题