2

私はjavascriptで実装したシンプルなボードゲームであるFacebookアプリケーションを書いています。Facebookはjavascriptアプリケーションをiframe内でのみ実行できるように見えるので、を使用してページを読み込んでいます<fb:iframe>。javascriptにユーザーのIDを伝えたいので、ユーザーに自分の番かどうかを伝えることができますが、fb:iframe内からFacebookデータにアクセスするためのドキュメントが見つかりません。Facebook APIをよく理解していないため、基本的なconecptが欠落している可能性があります。

4

4 に答える 4

3

FacebookのAPIをフォローするのは非常に難しく、ドキュメントは非常に貧弱です。あなたはJavascriptについて正しいです...通常のJavascriptはFacebookのiframe内でのみ機能します。それ以外の場合は、FBJSと呼ばれるフィルタリングされたJavascriptのサブセットに制限されます。ドキュメント内のFBJSに関することはすべて無視して、iframeに焦点を当てることができます。

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にたくさんのものを追加します。ユーザーのFacebookIDを示すパラメーターはfb_sig_user(ここでは000000001)です。<fb:iframe>「Iframeアプリ」ではタグを使用しない可能性があるため、アプリは「FBMLアプリ」として設定されていると思います。それでも、レンダリング方法はどちらの場合も似ておりsrc、「Iframeアプリ」でもドキュメントにたくさんの余分なものが追加されます。

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

Facebookコネクト

iframe内からFacebookを操作したい場合は、Facebook Connect Javascriptライブラリが役立ちます。FacebookConnectを設定するための最良の手順は、おそらくこのwikiページですが、それでも少し曖昧です。Facebook Connectは、完全に外部のサイト、またはiframe内の通常のコンテンツの両方に使用できます。後者のカテゴリに分類されるため、そのリンクの指示に従い、手順2(FeatureLoaderの場合)のコードの最初の行を使用すれば、問題はありません。

FeatureLoader.jsスクリプトを含めてFB.initを呼び出すと、通常はFBConnectを使用できるようになります。それ以降、 APIを操作できるようになるはずです。このusers.getLoggedInUser()メソッドは、Javascriptを介してiframe内の現在のユーザーIDを提供します。

お役に立てば幸いです。

于 2009-06-30T06:13:40.870 に答える
1

2011年3月の時点で、FBはiframeをロードするPOSTリクエストに移行していることに注意してください。method="post"とtarget="iframe_canvas"を含むフォームアクションに加えて、"signed_request"を含む入力type="hidden"を送信します。

于 2011-03-22T20:51:08.590 に答える
0

Facebook APIを使用して、を呼び出すことでユーザーIDを取得します。

Users.getLoggedInUser

その値にアクセスし、echo()を使用してそれをjavascript変数としてHTMLに追加します。これにより、Javascriptコードで使用できるようになります。

于 2009-06-30T03:55:07.727 に答える
0

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

于 2010-11-05T23:12:12.187 に答える