我的Heroku PHP Facebook应用程序日志中一直出现以下错误:
[app web.20] PHP Fatal error: Uncaught OAuthException: (#5) Unauthorized
source IP address\n thrown in /app/www/sdk/src/base_facebook.php on line 1238
我还注意到同一台服务器会一直出现这个错误,直到我重新启动进程(例如,在上面的情况下,web.20和web.6会不断失败),但是在执行
heroku ps:restart
之后,会出现其他不同的服务器失败。现在,经过一些研究,我发现人们一直建议我在Facebook App ->高级设置页面中将我的服务器IP列入白名单,这意味着Facebook维护了一个黑名单IP列表,这就是您可以逐个允许访问它们的地方。这让我想知道为什么Facebook明显鼓励其用户使用Heroku进行Facebook应用程序开发,同时又将其服务器列入黑名单。
基本上是这样的:
- Heroku是Facebook的托管合作伙伴
- 每次应用程序被回收时,Heroku都会为其用户提供不可预测的IP地址
- Facebook已经列出了许多Heroku服务器的黑名单(根据我的计算,大约占10%)
- 因此,您无法保证您的应用程序将始终能够访问其API以满足您的所有请求
像我这样的开发人员如何在Facebook赞助的Heroku环境中配置生产就绪的应用程序,而该环境显然会在大量API请求周围失败?