ローカルホストからFacebookチャットに接続することを計画しています。Facebookからセッションキーを取得する必要があります。サイトのURLをとして指定した場合、localhost:8080
またはip-address:8080
機能しない場合。
2つの異なるAPIキーを使用して2つのアプリをセットアップする方法について読みました。1つはdevm/ cで実行され、もう1つはローカルホストで実行されます。
ローカルホストでFacebookアプリを実行する方法を誰かが説明できますか?
ローカルホストからFacebookチャットに接続することを計画しています。Facebookからセッションキーを取得する必要があります。サイトのURLをとして指定した場合、localhost:8080
またはip-address:8080
機能しない場合。
2つの異なるAPIキーを使用して2つのアプリをセットアップする方法について読みました。1つはdevm/ cで実行され、もう1つはローカルホストで実行されます。
ローカルホストでFacebookアプリを実行する方法を誰かが説明できますか?
これについては少し前 にチュートリアルを書きました。
最も重要なポイントは「サイトのURL」です。
サイトのURL: http:// localhost / app_name /
フォルダ構造は次のようなものです。
app_name
¦ index.php
¦
+---canvas
¦ ¦ index.php
¦ ¦
¦ +---css
¦ main.css
¦ reset.css
¦
+---src
facebook.php
fb_ca_chain_bundle.crt
編集:
Kavya:IPまたはポートがなくてもFBサーバーはどのようにローカルホストを認識しますか?
これはFacebookとは何の関係もないと思います。iframeパラメータはクライアント側からsrc
読み込まれるため、ローカルURLをブラウザに直接配置した場合と同じように扱われると思います。
たとえば、オンラインサーバーにコンテンツ(例online.php
) を含むファイルがあります。
<iframe src="http://localhost/test.php" width="100%" height="100%">
<p>Not supported!</p>
</iframe>
そして、ローカルホストのルートディレクトリに次のファイルがありますtest.php
。
<?php echo "Hello from Localhost!"; ?>
ここにアクセスhttp://your_domain.com/online.php
すると、ローカルホストファイルのコンテンツが表示されます。
これが、リアルタイムサブスクリプションとコールバックの承認解除(言うまでもなく)がローカルホストURLで機能しない理由です!FacebookはこれらのURLにping(httpリクエストを送信)しますが、明らかにFacebookサーバーはそれらのURLをあなたのURLに変換しません!
localhostを使用する場合:
Facebook->設定->基本で、フィールド「アプリドメイン」に「localhost」と入力し、「+プラットフォームの追加」をクリックして「Webサイト」を選択します。
「モバイルサイトURL」と「サイトURL」の2つのフィールドが作成され、「サイトURL」に「localhost」と再度書き込みます。
私のために働きます。
'hosts'ファイルを編集して、ドメインのローカルバリエーションを作成することもできます。
例
実際のFacebookアプリケーションアドレスが「example.com」の場合、「localhost」を指す「hosts」ファイルに「localhost.example.com」(PCからのみアクセス可能)ドメインを作成し、このドメインでローカルWebサイトを実行できます。この方法でFacebookをだますことができます。
アプリの基本設定(https://developers.facebook.com/apps)の[設定]->[基本]->[アプリをFacebookと統合する方法を選択...]
「サイトURL:」と「モバイルサイトURL:」を使用して、本番URLと開発URLを保持します。両方のサイトが認証を許可されます。私は認証にFacebookを使用しているだけなので、モバイルサイトのリダイレクト機能は必要ありません。通常、認証のテスト中に「モバイルサイトのURL:」を「localhost:12345」サイトに変更し、完了したら通常のサイトに戻します。
2013年8月。Facebookでは、「localhost:3000」のように、アプリのポートを使用してドメインを設定することはできません。
したがって、https://pagekite.netlocalhost:port
を使用して、適切なドメインにトンネリングできます。
Railsの開発者はhttp://progrium.com/localtunnel/を無料で使用できます。
だから私はこれを今日機能させました。私のURLはhttp://localhost:8888
です。私がFacebookに与えたドメインはlocalhostです。メソッドを使用してデータをプルしようとしたため、機能していないと思いましたFB.api
。「未定義」の名前とソースのない画像を取得し続けたため、グラフにアクセスできませんでした。
後で、自分の問題は、の最初の引数を渡すだけで/me
、FB.api
トークンがないことに気づきました。したがって、関数を使用してトークンを取得する必要があります。トークンは引数FB.getLoginStatus
に追加する必要があります。/me
キャンバスのURLをhttp:// localhost/app_pathとして指定するだけです。
わかりました。これらの回答がどうなっているのかわかりませんが、私の仕事の上級開発者からアドバイスを受けて、何がうまくいったかをお知らせします。私はRubyonRailsで作業しており、FacebookのJavaScriptコードを使用してアクセストークンを取得しています。
問題:認証を行うために、FacebookはアドレスバーからURLを取得し、それをファイルにあるものと比較しています。localhost:3000
何らかの理由で使用することはできません。ただし、yoursite.dev
ローカルサーバーを実行し、ローカルホストがポイントしていた場所をポイントするなどyoursite.dev
、完全に構成されたドメイン名を使用できます。127.0.0.1:3000
ステップ1:Nginxをインストールまたは更新する
$ brew install nginx
(インストール)または$ brew upgrade nginx
(更新)
ステップ2:nginx構成ファイルを開きます
/usr/local/etc/nginx/nginx.conf
(通常はここ)
/opt/boxen/config/nginx/nginx.conf
(Boxenを使用する場合)
ステップ3http {}
このコードをブロックに追加します
proxy_pass
指し示したい場所に置き換えますyoursite.dev
。私の場合、localhost:3000または同等のものを置き換えていました127.0.0.1:3000
server {
listen yoursite.dev:80;
server_name yoursite.dev;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
ステップ4/etc/hosts
: Macでhostsファイルを編集して含める
127.0.0.1 yoursite.dev
このファイルは、ドメインをローカルホストに転送します。Nginxはローカルホストをリッスンし、ルールに一致する場合はリダイレクトします。
ステップ5:今後、開発環境を使用するたびに、Facebookが正しくログインするyoursite.dev
のではなく、アドレスバーでを使用します。localhost:3000
Forwardは、Facebookアプリのローカル開発を支援するための優れたツールであり、SSLをサポートしているため、証明書の問題はありません。
https://forwardhq.com/in-use/facebook
免責事項:私は開発者の1人です
httpsforlocalhostで実行するようにアプリを設定する必要があります
これに記載されている手順に従って、ubuntuでHTTPSを設定できます
次の手順を実行する必要があります。
apacheをインストールします(お持ちでない場合)
sudo apt-get install apache2
ステップ1-SSLモジュールをアクティブ化する
sudo a2enmod ssl
sudo service apache2 restart
ステップ2—新しいディレクトリを作成する
sudo mkdir /etc/apache2/ssl
ステップ3—自己署名SSL証明書を作成する
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache/ssl/apache.key -out /etc/apache2/ssl/apache.crt
このコマンドを使用すると、自己署名SSL証明書とそれを保護するサーバーキーの両方を作成し、両方を新しいディレクトリに配置します。最も重要な行は「共通名」です。ここに公式ドメイン名を入力するか、まだ持っていない場合はサイトのIPアドレスを入力します。
共通名(例:サーバーFQDNまたはあなたの名前)[]:example.comまたはlocalhost
ステップ4—証明書を設定する
sudo vim /etc/apache2/sites-available/default-ssl
次の行を見つけて、設定で編集します
ServerNamelocalhostまたはexample.com
SSLCertificateFile上のSSLEngine/etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
ステップ5—新しい仮想ホストをアクティブ化する
sudo a2ensite default-ssl
sudo service apache2 reload
トリック:
MAMPPROを使用して、次のものを作成します。サーバー名:ディスク上のサイトへのWebサイト(例:helloworld.com)の正確なアドレス
Facebookの場合: 元のサイトのURLも保持できます(例:helloworld.com)
これで、アドレスバーにWebサイトを入力すると、ローカルにいることがわかります。..そしてオンラインにしたいときは、MAMPPROでサーバーを非アクティブにします。
:)
上記の答えはどれも私にはうまくいきませんでした。私はFBAPI2.5で実行しています。鉱山は、解決すると成功につながる問題の組み合わせでした
動的IPの変更としてはおそらく理想的ではなく、おそらくDynDNSまたは同様のものを使用して、IPをより「静的」にすることができますが、それは私にとってはうまくいきました
私の場合、問題はlocalhost:4200からfacebookapiWebサイトへのCORSリクエストをクロームブロックしていることが明らかになりました。次の設定でChromeを実行します: "YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe" --disable-web-security --user-data-dir = "c:/ chromeは、開発中は魅力のように機能しました。localhostがなくてもFacebookアプリの設定に追加されました。