Facebook は、サーバーの実際の IP アドレスは気にしませんが、参照ページのドメイン名が Facebook に登録したドメインと同じであることを確認します。開発中にそれを機能させる秘訣は、開発のためにローカル マシンで作業しているときでも、ドメイン名を使用する方法を見つけることです。
DNS レコードを完全に制御できる場合は、開発マシンの実際の IP アドレス (静的 IP の場合) または単に 127.0 を指すホスト レコード (例: 'test.yourdomain.com' ) を追加できます。 0.1
DNS にアクセスできない場合、開発中にこれを回避する最も簡単な方法は、コンピューターのホスト ファイル (OSX および他のほとんどの UNIX マシンでは「/etc/hosts」) にエントリを追加して、ドメインを指定することです。 facebook でローカル ホスト マシンに登録します。したがって、次のような行を追加します。
127.0.0.0 test.yourdomain.com
hostsファイルの最後まで。つまり、Web ブラウザに test.yourdomain.com と入力すると、ローカル マシンに解決されます。
ここで、Facebook のアプリケーション設定の「Web サイト」セクションで、ドメイン名を設定の「サイト ドメイン」セクションに追加したことを確認します。これは、Facebook がドメインのサブドメインからのリクエストを受け入れることを意味します。つまり、「www.yourdomain.com」(本番サーバー) と「test.yourdomain.com」(ローカル開発マシン) の両方からの要求を受け入れます。
これで、ブラウザで「localhost」ではなく「test.yourdomain.com」URL を使用して、ローカル マシンで開発できるようになり、すべてが機能するはずです。
ああ-もう1つ-開発サーバーがポート80で実行されていない場合、facebookリダイレクトURIにもポート番号が必要ですが、ドメインURLと一致するときにこのポート番号が含まれます(率直に言って、これはフェイスブック API)。つまり、開発サーバーが (たとえば) ポート 8080 で実行されている場合は、リダイレクト URI のホスト名の末尾に「:8080」を追加する必要がありますが、運用サーバーがポート 80 で実行されている場合は、すべきではないリダイレクトURIに「:80」を入れてください。そうしないと、ページを見るために使用したURLにポート番号が明示的に含まれている場合にのみ機能します(本番サーバーではそうではありません)。これが実際に意味することは、Facebook 認証 URL を生成するときに、ポート番号がポート 80 でない場合にのみポート番号を含めるように条件を設定する必要があるということです。