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.6heroku ps:restart
です) が、失敗し続けるのは別のサーバーになります。
いくつかの調査を行った後、Facebook アプリ -> [詳細設定] ページでサーバー IP をホワイトリストに登録することを人々がアドバイスし続けていることに気付きました。つまり、Facebook はブラックリストに登録された IP のリストを保持しており、ここでそれらへのアクセスを 1 つずつ許可できます。なぜ Facebookはユーザーに Facebook アプリに Heroku を使用することを明確に勧めているのに、同時にサーバーをブラックリストに載せているのか疑問に思いました。
だから基本的に:
- Heroku は Facebook のホスティング パートナーです
- Heroku は、アプリがリサイクルされるたびに予測不可能な IP アドレスをユーザーに提供します
- また、Facebook は Heroku のサーバーの多くをブラックリストに載せています (私の計算では 10 分の 1 程度)。
- したがって、アプリがすべてのリクエストに対して API にアクセスできることを保証することはできません。
私の質問は:
私のような開発者は、API リクエストのかなりの部分で失敗することが明らかな Facebook がスポンサーとなっている Heroku 環境で、本番対応のアプリをどのように構成することを期待されているのでしょうか?