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

Facebook graph api 如何在不超过api配额的情况下作为一个管理员用户管理多个页面?,facebook-graph-api,access-token,facebook-page,facebook-access-token,Facebook Graph Api,Access Token,Facebook Page,Facebook Access Token,我的客户公司为数千家小企业管理Facebook页面。我们已经为我们的客户构建了一个Facebook应用程序,以简化流程,并允许他们一次性快速更改许多/所有页面 无论出于何种商业原因,我们的客户公司只为每个页面添加了一名员工作为管理员(以及小企业主)。此用户帐户已添加我们的应用程序,我们正在获取页面标记,并使用这些页面标记来管理页面(更改联系人信息、添加选项卡、获取墙帖)。我们遇到了一些非常苛刻的api请求限制。现在,我们每分钟只能添加3个新的Facebook页面(我认为,当所有这些都完成时,可能

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

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

我看到有人估计,对于一个访问令牌,您可以有大约600个请求/600秒的时间,但我认为,由于我们使用页面令牌进行了大部分工作,因此我们的操作不会计入单个api限制

是否有人确切知道api限制是否基于单个令牌,即使它们在技术上属于同一用户?考虑到我不能向这些页面添加更多管理员,有没有办法绕过这个限制

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

我根本不会称之为“苛刻”的限制。想象一下如果大量应用程序在几分钟内创建数百或数千个页面会发生什么。。。垃圾邮件!!一,

我看到有人估计,对于一个访问令牌,您可以有大约600个请求/600秒的时间,但我认为,由于我们使用页面令牌进行了大部分工作,因此我们的操作不会计入单个api限制

此限制仅基于应用程序ID强制执行。您使用API做什么以及作为谁(用户、页面)并不重要

我有没有办法绕过这个限制


在短时间内添加大量新页面对我来说确实像垃圾邮件。我想不出一个好的理由来解释为什么要这样做。

事实上这很简单,你只需要为页面而不是用户请求访问令牌

    $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;

希望这能有所帮助。

正如@Julio Popócatl所提到的,使用页面访问令牌(由长期使用的用户令牌生成)可能是一个不错的选择

这些页面访问令牌一旦正确生成,它们将永远不会过期,因此您至少需要少运行一次查询

API请求限制适用于来自用户、页面、应用程序等的每个请求。无论请求的来源是什么,他们总是向Facebook模式提出一些请求


,因为这将是用一个(或更少)请求获取多个数据,而不是单独发出每个请求。

对不起,我想我不清楚。我们现在没有创建这些页面。这些页面已经存在。以每分钟约3页的速度,我们正在向系统“添加页面”。因此,我们获取他们的访问令牌,更新他们的联系信息,添加一个选项卡,并获取选项卡上的信息。API调用限制应为每个会话/访问令牌,而且许多大型应用程序管理数百个页面时没有问题,因此我不知道您为什么会在这里遇到问题-您确定没有意外地在没有令牌的情况下进行API调用,应用程序令牌,或者(代替页面令牌)管理员的用户访问令牌?@Igy:我仔细检查了,这是工作流。1) 调用以使用我们自己的访问令牌获取常规页面信息。2) 调用以使用管理员的访问令牌获取页面的访问令牌。3) 调用以使用页面的访问令牌添加选项卡。4) 然后,我们(可能)启动一个异步任务,使用页面的访问令牌在页面上设置选项卡的名称。5) 然后我们启动异步任务,从页面获取帖子和评论。问题可能出现在步骤5中;我们显然在使用管理员的令牌。由于所有这些网页都有相同的管理员,我想这就是为什么我们超过了配额。。。。继续:我们正在修改步骤5的执行方式,以便它使用页面标记,调用更少(通过依赖FQL调用而不是图形调用,并且可能对新帖子/评论使用推送通知)。根据我们的业务逻辑,在某些情况下,我们可能根本不需要执行步骤5。我认为这会好得多,很快我们会尽我们所能做到最好。因此,感谢您的输入@Igy。对不起,我猜其他信息,如问题“每个访问令牌”。我猜他们指的是应用程序访问令牌。所以一般来说,我想做的(快速更改数百个facebook页面)是不可能的?这不是垃圾邮件,当我们有许多人使用同一个应用程序更新许多页面时。基本问题是我们不能扩大规模。Facebook有超过300万个页面,他们如何期望一个企业在10分钟内通过600个API调用扩展到300万每个访问令牌有600个API调用,使用使用应用程序用户的用户访问令牌和他们管理的页面的页面访问令牌