服务器端身份验证和请求超时到Facebook?

时间:2011-10-07 12:24:34

标签: facebook authentication oauth

我的应用程序的一部分需要登录,并且无法使用javascript等进行客户端身份验证,因此请在服务器端使用http请求进行身份验证:

https://graph.facebook.com/oauth/access_token?client_id=[app_id]&client_secret=[secret]&redirect_uri=[uri]&code=[code]

大部分时间都可以正常使用。但是,我间歇性地从此请求返回超时/空响应。我可以运行一个会一遍又一遍地请求此页面的工具,并且大约80-90%的时间都会成功。一旦发生一个故障,所有请求都会因任何用户失败几秒钟然后再次运行。

有没有其他人经历过这样的事情,或者您是否知道Facebook上的请求是否会超过某个阈值?我在文档中找不到任何类似的信息。

3 个答案:

答案 0 :(得分:1)

这是因为如果您发送过多请求,Facebook会认为您想要进行DDOS攻击并暂时阻止您的请求。

答案 1 :(得分:1)

您必须仅为会话检索一次令牌。其他方式肯定会让FB防御反对投票。 但是,如果您未申请“offline_access”特殊权限,则您的令牌会有到期时间。 默认值为retentionPeriod = 2和retentionUnit =小时。 也许你应该要求

scope=offline_access

进入您的权限,然后只检索一次用户令牌。 此外,您需要执行

try{my api call} catch(bad token){ reload the new token and retry } 

如果任何API调用因验证错误而失败,则重新询问令牌。

答案 2 :(得分:0)

在app Insights中,您可以检查诊断页面中的API throtting,以及性能页面中最常见的错误。如果您没有看到任何错误或没有任何限制,您可能会更改应用程序逻辑,如果您收到超时/空响应,请再次请求令牌。