我的 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 应用程序 -> 高级设置页面中将我的服务器 IP 列入白名单,这意味着 Facebook 保留了一份列入黑名单的 IP 列表,在这里您可以逐个允许访问它们。这让我想知道为什么 Facebook 明确鼓励其用户将 Heroku 用于其 Facebook 应用程序,同时将其服务器列入黑名单。
所以基本上:
- Heroku 是 Facebook 的托管合作伙伴
- 每次应用程序被回收时,Heroku 都会为其用户提供不可预测的 IP 地址
- Facebook 已将 Heroku 的许多服务器列入黑名单(据我统计,大约十分之一)
- 因此,您永远无法保证您的应用程序会针对您的所有请求访问其 API
我的问题是:
像我这样的开发人员如何在 Facebook 赞助的 Heroku 环境中配置生产就绪的应用程序,而这种环境显然必然会在大量 API 请求上失败?