2009-06-30 10 views
2

私はJavaScriptで実装したシンプルなボードゲームであるFacebookアプリケーションを書いています。 Facebookは、iframe内でjavascriptアプリケーションを実行するように見えるので、<fb:iframe>を使用してページをロードしています。私はちょうど彼のターンであるかどうかをユーザーに伝えることができるように、javascriptにユーザーのIDを伝えることができるようにしたいが、fb:iframeからFacebookのデータにアクセスするためのドキュメントを見つけることができない。私はおそらく、私はFacebookのAPIをよく理解していないので、いくつかの基本的な内容が不足しているでしょう。fb:iframe内でjavascriptからFacebookのユーザーIDにアクセスするには?

答えて

3

FacebookのAPIは非常に厳しいので、ドキュメントは非常に貧弱です。あなたはJavascriptについて正しいです...通常のJavascriptはFacebook上のiframe内でのみ動作します。それ以外の場合は、FBJSというフィルタリングされたJavascriptのサブセットに限定されます。ドキュメンテーションのFBJSについては何も無視して、iframeに焦点を当てることができます。

インラインフレームのロード

私が言及だろう最初の事は<fb:iframe>タグが実際にsrc属性内のもののトンでレンダリングされることをです。だから、自分のFacebookのページに次のようにタグをつけた場合:<fb:iframe src="http://example.com/page?x=y">、それはユーザーのブラウザにロードしたときに、それはより多くのこのようなものですなってしまう何:

<iframe src="http://example.com/page?x=y&fb_sig_in_iframe=1&fb_sig_locale=en_US&fb_sig_in_new_facebook=1&fb_sig_time=1246340245.3338&fb_sig_added=1&fb_sig_profile_update_time=1242155811&fb_sig_expires=1246345200&fb_sig_user=000000001&fb_sig_session_key=2.d13uVGvWVL4hVAXELgxkZw__.3600.1246345200-000000001&fb_sig_ss=mZtFjaexyuyQdGnUz1zhYTA__&fb_sig_api_key=46899e6f07cef023b7fda4fg2e21bc58&fb_sig_app_id=22209322289&fb_sig=bbc165ebc699b12345678960fd043033">

FacebookはSRCにもののトンを追加します。ユーザーのFacebook IDがfb_sig_user(ここでは000000001)であることを示すパラメータです。 「Iframeアプリ」に<fb:iframe>タグを使用していない可能性があるため、アプリが「FBMLアプリ」として設定されていると仮定しています。それにもかかわらず、どちらの場合でもレンダリング方法は似ていますが、「Iframeアプリケーション」のsrcドキュメントには余分なものがあります。

これは実際にiframeの最初の読み込み時にFacebookのユーザーIDのみを渡します。 iframe内の後続の操作では、明示的に渡さない限り、そのユーザーIDにアクセスすることはできません。

のFacebookコネクト

あなたはインラインフレーム内からFacebookでやりとりしたい場合はFacebookの接続JavaScriptライブラリの出番、それはです。Facebookの接続を設定する上で最高の命令は、おそらくthis wiki pageですが、それはまだです少し暗い。 Facebook Connectは、完全に外部のサイト、またはiframe内の通常のコンテンツの両方に使用できます。後者のカテゴリに入るので、そのリンクの指示に従って、手順2(FeatureLoaderの場合)の最初のコード行を使用する場合は、大丈夫です。

FeatureLoader.jsスクリプトを組み込み、FB.initと呼んだら、一般にはFB Connectを起動して実行する必要があります。あなたはその後からAPIと対話することができます。 users.getLoggedInUser()メソッドは、Javascript経由でiframe内の現在のユーザーIDを取得します。

希望に役立ちます。

+0

ありがとうございます。私はそれがそれのような変数を渡すことを知らなかった、それは私のために十分かもしれません。私はJavaScriptを使ってAPIを使うことをFacebook Connectのものにしようとしていましたが、運がまだありません。何が間違っているのか分かりませんが、少なくとも私はこの概念を理解しています。 – f4hy

0

あなたCNAは意志あなたがエコー()は、JavaScriptの変数として、あなたのHTMLにそれを追加するために使用した後、その値にアクセスすることができます

Users.getLoggedInUser

を呼び出すことで、ユーザーIDを取得するにはFacebookのAPIを使用しますあなたのJavascriptコードで利用できるようにしてください。

0

試してみてくださいEnv.user、それはログインしているユーザーのIDを持っています。

+0

(あなたがfacebook.comのコンテキスト内にいる限り、それは..) – Weasel5i2

1

2011年3月現在、FBはiframeを読み込むためのPOST要求に移動しています。これは、method = "post"とtarget = "iframe_canvas"のフォームアクションと、 "signed_request"を伴う入力タイプ= "hidden"を送信します。

関連する問題