localhostでFacebookアプリケーションを実行する


92

ローカルホストからFacebookチャットに接続する予定です。Facebookからセッションキーを取得する必要があります。サイトのURLを指定したlocalhost:8080場合、または機能ip-address:8080しません。

2つの異なるAPIキーを使用して2つのアプリを設定する方法について1つはdev m / cで実行し、もう1つはlocalhostで設定することについて読みましたが、まったくわかりませんでした。

誰かがlocalhostでFacebookアプリを実行する方法を説明できますか?


@KavyaデスクトップFacebookチャットアプリケーションを作成しようとしていますか?
Searock

はい...私は...私のM / CからFacebookサーバーをヒットしたいが、ここで同じについての記事を見たstackoverflow.com/questions/1877913/... ...私はそれを得るDIN
熱狂

@Kavyaもしあなたがそれを作りたいなら、あなたはあなたが使うつもりのプログラミング言語に言及していませんか?
Searock、2011

2
それについてのチュートリアルを書きました。
ifaour

5
@xoxoxoコミュニケーションでは適切な句読点とスペルを使用してください。
バート

回答:


77

これについてのチュートリアルを少し前に書いた。

最も重要なポイントは「サイト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

編集:
KavyaIPまたはポートがなくても、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.phplocalhostファイルのコンテンツが表示されます。

これが、リアルタイムサブスクリプションと認証解除のコールバック(言及するだけ) localhost URLで機能しない理由です!FacebookはこれらのURLにping(httpリクエストを送信)しますが、明らかにFacebookサーバーはそれらのURLをあなたのURLに変換しません。


「サイトURL」がどこにあるのか、またはどのタブにあるのかわからないようです。
user962206 2013

これは8080ポートで機能しますか?私はまだ、サイトのURLでエラーを取得しています:http://localhost:8080/auth/index.htmlとエラーを与えるWebページがあるhttp://localhost:8080/auth/index.htmlとchannelurlラインがある:channelUrl : '//localhost:8080/auth/channel.html',
ネクロマンサー

「フォルダ構造」の部分がわかりません。Facebookのコメントをページに読み込むためにFacebookでWebサイトにログインするだけの場合でも、そのキャンバス構造が必要ですか?
AlxVallejo 2013年

ローカルホストに公開名を付けて表示できるようにするトンネリングツールがいくつかあるので、Facebookはpingを返すことができます。PageKiteという名前で作成しましたが、他にもあります。
BjarniRúnar2013

29

localhostを使用する場合:

Facebook->設定->基本、「アプリドメイン」フィールドに「localhost」と入力し、「+プラットフォームを追加」をクリックして「Webサイト」を選択します。

「モバイルサイトのURL」と「サイトのURL」という2つのフィールドが作成されます。「サイトのURL」に「localhost」と再度書き込みます。

私のために働く。


おかげで、私は他の解決策を試しましたが、最終的にこれはうまくいったものでした
rahulmishra

私が持っていたサイトURLフィールド:localhost 、しかし機能しませんでした私はあなたが言及したようにアプリドメインフィールドにもlocalhostを追加しました、これはうまく
いきます

23

「hosts」ファイルを編集して、ドメインのローカルバリエーションを作成することもできます。

実際のFacebookアプリケーションのアドレスが「example.com」の場合、「localhost」を指す「hosts」ファイルに「localhost.example.com」(PCからのみアクセス可能)ドメインを作成し、このドメインでローカルWebサイトを実行できます。この方法でFacebookをだますことができます。


1
魅力のように動作します、ありがとう!FYI-ホストはでWindows 7の上に配置されているC:/Windows/System32/drivers/etc/hostsかのUbuntuの上で/etc/hosts
pztrick

優れた方法論。ありがとう。
ジェラド2014

アプリドメインとキャンバスURLには何を設定しますか?
クレイグ

ただし、ポートを指定することはできないため、同じドメインでの開発を許可するにはリバースプロキシを使用する必要があります。stackoverflow.com/questions/10729034/…を
MagicLAMP

7

アプリの基本設定(https://developers.facebook.com/apps)の[設定]-> [ 基本]-> [アプリをFacebookと統合する方法を選択...]

「サイトURL:」と「モバイルサイトURL:」を使用して、プロダクションURLと開発URLを保持します。両方のサイトで認証が許可されます。私は認証にFacebookを使用しているだけなので、モバイルサイトのリダイレクト機能は必要ありません。通常、認証のテスト中に「モバイルサイトURL:」を「localhost:12345」サイトに変更し、完了したら通常のサイトに戻します。


6

2013年8月。Facebookは、アプリケーションのポートを使用してドメインを設定することを許可しません(例: "localhost:3000")。

したがって、https://pagekite.netを使用してlocalhost:port、適切なドメインにトンネリングできます。

Rails開発者はhttp://progrium.com/localtunnel/を無料で使用できます。

  • Facebookでは、一度に1つのドメインしかアプリに許可されません。ローカルホストとして別のものを追加しようとすると、ドメインに関する何らかの異なるエラーが表示されます。一度にコールバック用とアプリドメイン設定用に1つのドメインのみを使用するようにしてください。

4

だから私はこれを今日働かせました。私のURLはhttp://localhost:8888です。私がFacebookに提供したドメインはlocalhostです。FB.apiメソッドを使用してデータをプルしようとしたため、機能していないと思いました。「未定義」の名前とソースのない画像を取得し続けたため、グラフにアクセスできませんでした。

後で私は自分の問題が本当に最初の引数を/metoに渡すだけでFB.apiあり、トークンを持っていないことに気づきました。したがって、FB.getLoginStatus関数を使用してトークンを取得する必要があり/meます。トークンは引数に追加する必要があります。


2

キャンバスのURLをhttp:// localhost / app_pathと指定するだけです


@ifaour i follwoed ur tutorial ..そのエラーメッセージAPIエラーコード:191 APIエラーの説明:指定されたURLはアプリケーションによって所有されていませんエラーメッセージ:redirect_uriはアプリケーションによって所有されていません。私ドンは...内部のFBを実行するためにそれを必要とする
熱狂

@KavyaはキャンバスのURLをlocalhost / app_pathとして追加し、fb appを開くだけなので、非常に忙しいので、localhost.Sorryからアプリを実行します。
JustCoding 2011年

これを行う別の方法は、localhostを指定する代わりに、サイト/キャンバスURLをローカルにマッピングすることです。その後、ターゲットドメインを使用できます。どのアーキテクチャで開発しているのかはわかりませんが、Windowsでは、IISサイトを正しいバインディングでローカルにセットアップし、C:\ Windows \ System32 \ drivers \ etcのホストファイルにエイリアスを追加することでこれを実現できます。例:127.0.0.1 yourproject.yourdomain.net
dumbledad

2

わかりました、これらの答えがどうなっているかはわかりませんが、私の仕事の上級開発者の助言に従って、何がうまくいったかをお知らせします。Ruby on Railsで作業していて、FacebookのJavaScriptコードを使用してアクセストークンを取得しています。

問題:認証を行うために、FacebookはアドレスバーからURLを取得し、それをファイルにあるものと比較しています。彼らはあなたがlocalhost:3000何らかの理由で使用することを許可しません。ただし、yoursite.devローカルサーバーを実行して、ローカルホストが指している場所やローカルホストが指している場所など、完全に構成されたドメイン名yoursite.dev127.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を使用する場合)

ステップ3このコードをhttp {}ブロックに追加します

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:hostsファイルを編集して/etc/hosts、Macでインクルードします

127.0.0.1   yoursite.dev

このファイルは、ドメインをlocalhostに送信します。Nginxはlocalhostをリッスンし、ルールに一致する場合はリダイレクトします。

ステップ5:今後開発環境を使用するたびyoursite.devlocalhost:3000、Facebookが正しくログインするようにする代わりに、アドレスバーのを使用します。


1

Forwardは、ローカルでFacebookアプリの開発を支援するための優れたツールです。SSLをサポートしているため、証明書に問題はありません。

https://forwardhq.com/in-use/facebook

免責事項:私は開発者の一人です


1
そして、PageKiteはForwardのライバルの1つです(私はそれを作りました!)。;-)
BjarniRúnar2013

太陽の下で他のすべてを試みた後、これは私のために働いた。唯一の問題は、そのすべての転送が本当に遅いということです。ただし、FBコールバックを取得しないよりはましです!ありがとう
クレイグ14

0

ローカルホストのhttpsで実行するようにアプリを設定する必要があります

これに記載されている手順に従って、ubuntuでHTTPSをセットアップできます

https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-12-04

次の手順を実行する必要があります。

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

次の行を見つけて、設定で編集してください

ServerName localhostまたはexample.com

SSLCertificateFile上のSSLEngine /etc/apache2/ssl/apache.crt

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

ステップ5 —新しい仮想ホストをアクティブ化する

sudo a2ensite default-ssl
sudo service apache2 reload

0

トリック:

MAMPPROを使用して作成:サーバー名:ディスク上のサイトへのWebサイトの正確なアドレス(例:helloworld.com)

Facebookの場合: 元のサイトのURLも保持できます(例:helloworld.com)

これで、アドレスバーにウェブサイトを入力すると、ローカルにいることがわかりました。..そして、オンラインになりたいときは、MAMP PROでサーバーを非アクティブにします。

:)


0

上記の答えはどれもうまくいきませんでした。FB API 2.5で実行しています。鉱山は、一度解決すると成功につながる問題の組み合わせでした

  1. テストアプリを作成して、そのように維持および管理され、稼働時に無効にできることを確認します。
  2. エラーメッセージを正しく読みます:)-「クライアントOAuthログイン」で「Web OAuthログイン」を有効にする必要がありました
  3. https://www.whatismyip.com/を使用して、現在のIPを確認します
  4. 私のドメインにhttp://localhost.mydomain.comというAレコードを作成 して、現在のIPをポイントする

動的IPが変更されたため、おそらく理想的ではなく、おそらくDynDNSなどを使用してIPをより「静的」にすることができましたが、それは私にとってはうまくいきました


0

私の場合、問題は、localhost:4200からFacebook API WebサイトへのCORSリクエストをクロムでブロックしていることが判明しました。次の設定でChromeを実行する: "YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe" --disable-web-security --user-data-dir = "c:/ chrome開発中は魅力的でした。localhostがなくてもFacebookアプリの設定に追加されました。


ローカル開発では問題なく動作しますが、本番
環境では
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.