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

问题描述:

据我了解,facebook API的速率限制为每600秒约600个呼叫,每个令牌& IP。现在我有一个网站/脸书应用程序,允许用户浏览公共夜总会页面和事件,不需要用户登录浏览页面,所以我使用我的应用程序令牌。但是,对于用户能够使用我的网站/应用程序中他们的帐户与Facebook图形进行交互的功能,他们必须登录,因此我使用用户令牌。Facebook API速率限制 - 服务器端vs客户端

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

我已经做了一些调查,发现我可以从客户端进行API调用,这样每个用户都会有不同的IP地址(用户计算机)浏览公共夜总会页面和事件,所以那么每个用户每600秒将有600个呼叫的速率限制。但是,如果我从客户端进行API调用,那么我的应用程序令牌和应用程序秘密对用户是否可见?这会带来安全风险吗?任何人都可以验证这是否正确?是否还有其他的事情可以做,以便在用户浏览公共夜总会页面和事件时不超过速率限制?提前致谢。

+1

哎哟我的眼睛受伤了。你能把你的问题分成几段吗? – Raptor 2013-04-26 06:44:41

+0

对不起,我...分为段落,谢谢 – 2013-04-26 06:47:28

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

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

看到这个问题:Structure of a facebook app with minimal api calls

+0

感谢您的回应,但我不知道你完全理解我的问题。 – 2013-04-27 00:26:39

+0

“公共夜总会页面”是Facebook上的一个公共页面,由夜总会管理。我的网站/应用根据用户的位置显示位于用户附近的夜总会页面。但是用户不需要登录查看这些页面,因为它们是公共页面,所以我使用我的应用访问令牌来进行这些调用。但是由于用户没有登录,每个用户都不会有唯一的访问令牌,他们都会在进行API调用时使用我的应用访问令牌。 – 2013-04-27 00:28:27

+0

因此,由于多个用户将使用1个访问令牌(我的应用令牌)和1个IP(我的服务器IP),如果多个用户同时浏览页面,则很容易超过速率限制。在下面的Facebook文档中,它表示不在客户端代码中包含应用令牌或应用秘密:https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/ – 2013-04-27 00:29:02