2012-12-12 7 views
5

プライベートネットワーク内のコンピュータで開発サーバー(Javaサーブレットコンテナ)を実行しています(IP範囲192.168.0.0192.168.255.255)。この開発サーバーは私の統合テスト環境を実行します。このテスト環境には独自のFacebook App IDがあります。サーバーを192.168.x.yの範囲で実行すると、私の同僚がウェブサイトをテストしたり、自分のFacebookアカウントなどで自分のローカルWebサイトにログインすることができます。Facebook Apps:任意のプライベートネットワークアドレスで単一のFacebookアプリケーションを実行できるようにする

https://developers.facebook.com - >「基本設定」の下にあります - >「Facebookログインのあるウェブサイト」フィールドには、http://192.168.2.106:8080が設定されています。これは、開発サーバーがバインドするアドレスとポートの組み合わせであるためです。

DHCPのおかげで、私のコンピュータのIPアドレスは少し異なります。すなわち、192.168.2.109です。私は(例えばFacebookログイン)私のサーバーを起動して、関連する何のFacebook-APIを実行しようとするたびに、私はFacebookの

{ 
    "error": { 
     "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.", 
     "type": "OAuthException", 
     "code": 191 
    } 
} 

から、次のエラーメッセージが表示されますFacebookのアプリケーションは、「範囲を許可していする方法はありますIPアドレスウェブサイトのFacebookログイン "?他にどのような解決策を提案できますか?

私の同僚は、独自のプライベートネットワークアドレスを使用して、自分のマシンで開発サーバーを起動することもできます。したがって、同じFacebook App IDは、異なるIPアドレスを持つ異なるマシンで動作し、プライベートネットワーク内のすべてのユーザーがアクセスできるようになります。

に「FacebookログインのあるWebサイト」を設定すると、開発サーバーは、実行しているのと同じマシンでのみ使用できることに注意してください。これは残念なことに同僚がこの開発サーバーインスタンスにアクセスするのを防ぎます。

更新

はバグ提出:あなたがWindows上で実行している場合は、あなたのホストがCでファイルを変更してみてください可能性がありhttps://developers.facebook.com/bugs/606277079382609

+0

DCHPサーバに静的リースを設定するだけではどうですか? – Igy

+0

追加の制約を質問に追加してください。 – user314104

答えて

1

を:\ WINDOWS \ System32に\ドライバ\ etcに と虚にあなたのIPを追加ドメイン(あなたの同僚もそれを行う必要があります)、そのドメインをFacebookの設定パネルに配置します。 私はこれについては分かりませんので、それが動作する場合私に教えてください:)

+0

あなたのソリューションに感謝します。私はそれを通して考えました。プライベートネットワーク内のすべての同僚のコンピュータ上のホストファイルを変更することは、実用的ではありません(Androidクライアントなど)。さらに、私が知っている限り、Windowのホストファイル構文はIPアドレスワイルドカードをサポートしていません。したがって、サーバーのIPが変更された場合(DHCPやサーバーが別のマシンで実行されているなど)、すべてのマシンでhostsファイルを更新する必要があります。 – Abdull

1

あなたのアプリケーション設定でIP範囲を設定することはできません知っている限り、redirect_uriは、通常ドメイン名通常は公的なウェブサイトでのケースです。

この問題を回避する最善の方法は、ローカル開発サーバーが常に同じIPを取得していることを確認することです。サーバーを作成する場合は、一般的には良い方法です。 ネットワークの設定に応じて、それを行うには、いくつかの方法が2つのオプションここでは、そこにされます:常にあなたのdevのサーバーに同じIPを割り当てる

  1. セットアップDHCPサーバがMACがルールを少し
  2. ベンドに対処コンピュータが未使用のIPアドレスを要求するように設定します。 DHCPサーバーは通常、IPアドレスを192.168.1.1から192.168.254.254まで順番に割り当てます。そのため、コンピュータは範囲の上位にあるIPを要求します(IPを最初に使用していないことを確認してください)
+1

私が直面している課題/制約は次のとおりです。開発者は、職場、自宅、ビジネスパートナーの外部ネットワークなど、あらゆるネットワーク環境でOWNラップトップでWebアプリケーションを起動できる必要があります。特に、外国のネットワークのユースケースは、絶えず変化するIPに頼ることが不可能になります。また、「開発者がWebアプリケーションを起動することができるすべての」ユースケースでは、IP/1台のCentral Dev Serverを1つしか持てないということができます。 – Abdull

1

IPアドレスを使用する代わりに、localhostを使用します。

だから、hxxp://192.168.1.20はhxxpになる:// localhostの

(TTでXXを置き換える)

これは、そのIPアドレスが何であれ、戻ってローカルマシンに解決します。私はあなたの開発サーバーがあなたのPC上で動作していると仮定しています.WAMPなどを使用しています。どのようなネットワーク環境であれ、どんなラップトップでも動作しなければならないと述べているので、私はこの前提を描いています。

+0

localhostで開発サーバーを実行すると、同僚がこのサーバーにアクセスできなくなります。同僚は、自分のFacebookアカウントにサインインし、ウェブサイトでテスト/プレーするためにサーバーにアクセスすることができます。 – Abdull

+0

devサーバは1つだけですが、どこからでもアクセスできるようにしたいのですか?その場合、ローカルアドレス指定を使用できません。同僚が別のネットワーク上にある場合、ローカルネットワークになります。ローカルアドレッシング(192.168,10.0など)についての全体的なポイントは、すべてのネットワークが自分自身のものを持つことができることです。だからあなたは、任意のネットワークからdevsをあなたのdevサーバーにアクセスできるようにしたいと言っていますか?その場合、ネットワークの外部IPアドレスを使用して特定のポートを割り当て、そのポートをデバイス・サーバーに転送する必要があります。 – Puzbie

1

ドメインを所有している場合、192.168.2.109を指すサブドメインtest.mydomain.comを作成できます。

住所が再度変更される場合は、それに応じてエントリを変更することができます。

DNSエントリが192.168の範囲のIPアドレスを指すことができない理由はありません。あなたのネットワークの外にいる人にとっては、外部からあなたのIPアドレスにアクセスすることはできないので、あまり役に立ちませんが、ネットワーク内の同僚にとってはうまくいくでしょう。

同僚が自分のPCでWebアプリケーションを実行したい場合は、もちろん、自分のホストファイルを使用してこの設定を上書きすることができます。

3

もしあなたがlocalhostを使いこなすことができたら、非常に簡単な方法があります: facebookアプリケーションをhttp://lvh.me:3000/(またはあなたのサーバがローカルホストでリッスンしているポート)にリダイレクトさせます。善意の開発者がlvh.meドメインを所有しており、DNSセットアップがlocalhostを指し示すようにしました。私はこれを試して、それは私が開発テストに使用したものです。 同様に、あなたはそのようなことをすることができ、自分が所有するドメインのDNSレコードをローカルIPの範囲に向けます。私はDNSに精通していないので、それを設定する方法や可能かどうかはわかりません。

関連する問題