Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook API速率限制-服务器端与客户端_Facebook_Facebook Graph Api_Facebook Fql_Fql.multiquery - Fatal编程技术网

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

Facebook API速率限制-服务器端与客户端,facebook,facebook-graph-api,facebook-fql,fql.multiquery,Facebook,Facebook Graph Api,Facebook Fql,Fql.multiquery,据我所知,FacebookAPI的速率限制为每令牌和IP每600秒600次调用。现在,我有了一个网站/facebook应用程序,允许用户浏览公共夜总会页面和活动,而不需要用户登录即可浏览这些页面,因此我使用我的应用程序令牌。但是,为了让用户能够使用我的网站/应用程序上的功能,在那里他们的帐户与facebook图形交互,他们必须登录,所以我使用用户令牌 因此,当用户登录时,应该不会出现超过速率限制的问题,因为每个用户都有不同的用户令牌,因此每个用户的速率限制为每600秒600次呼叫。但我担心的是,

据我所知,FacebookAPI的速率限制为每令牌和IP每600秒600次调用。现在,我有了一个网站/facebook应用程序,允许用户浏览公共夜总会页面和活动,而不需要用户登录即可浏览这些页面,因此我使用我的应用程序令牌。但是,为了让用户能够使用我的网站/应用程序上的功能,在那里他们的帐户与facebook图形交互,他们必须登录,所以我使用用户令牌

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


我做了一些研究,发现我可以从客户端进行API调用,这样浏览公共夜总会页面和活动的每个用户都会有不同的IP地址(用户计算机),因此每个用户的速率限制为每600秒600次调用。但是,如果我从客户端进行API调用,那么我的应用令牌和应用机密是否对用户可见?这会是一种安全风险吗?有人能证实这是否正确吗?我还可以做些什么,以确保用户在浏览公共夜总会页面和活动时不超过费率限制?提前感谢。

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

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


看看这个问题:

哎哟,我的眼睛疼。你能把你的问题分成几段吗?很抱歉……我把问题分成几段,感谢你的回答,但我不确定你是否完全理解我的问题。“公共夜总会页面”是Facebook上由夜总会管理的公共页面。我的网站/应用程序根据用户的位置显示位于该用户附近的夜总会页面。但是用户不需要登录就可以查看这些页面,因为它们是公共页面,所以我使用我的应用访问令牌来拨打这些电话。但由于用户未登录,因此每个用户不会有唯一的访问令牌,在进行API调用时,他们都将使用我的应用程序访问令牌。因此,由于多个用户将使用1个访问令牌(我的应用程序令牌)和1个IP(我的服务器IP),如果多个用户同时浏览页面,则很容易超过速率限制。在以下Facebook文档中,它表示不要在客户端代码中包含应用令牌或应用机密: