私はjavascriptで実装したシンプルなボードゲームであるFacebookアプリケーションを書いています。Facebookはjavascriptアプリケーションをiframe内でのみ実行できるように見えるので、を使用してページを読み込んでいます<fb:iframe>
。javascriptにユーザーのIDを伝えたいので、ユーザーに自分の番かどうかを伝えることができますが、fb:iframe内からFacebookデータにアクセスするためのドキュメントが見つかりません。Facebook APIをよく理解していないため、基本的なconecptが欠落している可能性があります。
4 に答える
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を提供します。
お役に立てば幸いです。
2011年3月の時点で、FBはiframeをロードするPOSTリクエストに移行していることに注意してください。method="post"とtarget="iframe_canvas"を含むフォームアクションに加えて、"signed_request"を含む入力type="hidden"を送信します。
Facebook APIを使用して、を呼び出すことでユーザーIDを取得します。
その値にアクセスし、echo()を使用してそれをjavascript変数としてHTMLに追加します。これにより、Javascriptコードで使用できるようになります。
試してみてくださいEnv.user
、それはログインしたユーザーのIDを持っています。