Facebook API速率限制 - 服务器端与客户端

时间:2013-04-26 06:43:35

标签: facebook facebook-graph-api facebook-fql fql.multiquery

根据我的理解,facebook API的速率限制是每600秒约600次通话,每个令牌& IP。现在我有一个网站/ facebook-app,允许用户浏览公共夜总会页面和事件,不需要用户登录浏览页面,所以我使用我的App令牌。但是,为了使用户能够使用我的网站/应用程序中他们的帐户与Facebook图表交互的功能,他们必须登录,所以我使用用户令牌。

因此,当用户登录时,超出速率限制应该没有问题,因为每个用户将具有不同的用户令牌,因此每个用户将具有每600秒600个呼叫的速率限制。但我担心的是,当用户浏览公共夜总会页面和未登录的事件时,我的应用程序将超过速率限制,因为只有1个应用程序令牌和1个IP地址(我的服务器)用于多个用户。如果有多个用户同时浏览公共夜总会页面和事件,那么很容易超过速率限制。

我做了一些研究,发现我可以从客户端进行API调用,这样就会为浏览公共夜总会页面和事件的每个用户提供不同的IP地址(用户计算机),所以每个用户的速率限制为每600秒600次呼叫。但是,如果我从客户端进行API调用,那么用户可以看到我的应用令牌和应用秘密吗?这会带来安全隐患吗?任何人都可以验证这是否正确?当用户浏览公共夜总会页面和活动时,我还能做其他任何事情吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

从客户端拨打电话时,您不提供应用程序密码,只提供客户端可以看到的应用程序ID,因为它们已登录到您的应用程序中。您应用的Facebook Cookie包含您的应用ID。每个客户都有自己的令牌,他们也可以看到。

我不确定“浏览夜总会页面”在技术上意味着什么,但如果您可以使用JavaScript将服务器工作卸载到客户端,那就更好了。此外,在服务器端对用户进行身份验证时,请尽量不要在每个页面请求上调用$ facebook-> getUser(),因为这会违反您的API限制。如果可能,尝试使用JavaScript登录客户端,如果没有使用FB服务器端将它们登录到ONCE,然后设置自己的会话以从那时起使用您的站点对它们进行身份验证。这将极大地减少您的API调用。

请参阅此问题:Structure of a facebook app with minimal api calls