次のものがあることを確認してください:(http://wiki.developers.facebook.com/index.php/Connect/Setting_Up_Your_Site#Referencing_Facebook_Connect_on_Your_Siteからの一部)
- xd_receiver.htmを作成し、それがドメインのルートにあること
- ドキュメントの本文の上部にFeatureLoader.js.phpを含めました
- 質問のJavaScript(FB_RequiresFeaturesなど)をドキュメントの下部に追加しました
私のアプリで現在正常に実行されているコードの例:
<script type="text/javascript">
window.onload = function() {
FB_RequireFeatures(["XFBML", "Connect"], function() {
FB.Facebook.init("...my api key...","xd_receiver.htm");
FB.CanvasClient.syncUrl();
});
};
</script>
FB_RequireFeatures呼び出しから「XFBML」を省略し、パスをxd_receiver.htmに変更することもできます。これで、問題なく動作するはずです。
さらに、アプリケーションの接続URL(Facebookの開発者アプリを介して設定)がxd_receiver.htmファイルの親を指していることを再確認します。したがって、アプリがhttp://www.mydomain.comでホストされている場合、コード例を見ると、xd_receiver.htmはhttp://www.mydomain.com/xd_receiver.htmにあり、次のようになります。接続URLとしてhttp://www.mydomain.comが必要です。
それでも機能しない場合は、Firebug(または同様のツール)をインストールして、ネットトラフィックを確認してください。これを機能させていたとき、Facebook Javascript APIはサイレントに失敗し、Facebookが私のConnect URLを気に入らなかったことに気付いたのは、リクエストを何度も調べただけでした。
それがすべて機能していることをテストするために、私は使用したくなるでしょう
FB.Connect.streamPublish();
投稿した行ではなく、ダイアログがポップアップするはずであり、実際の例として明確に示されています。空の文字列を引数として渡すだけではどうなるかわかりません。
最後に、IFrameベースのFacebookアプリはたくさんあります。好きなことをしているアプリを見つけたら、いつでもJavascriptを見て、どのようにそれを達成したかを知ることができます。言い換えれば、FacebookはサンプルのIFrameアプリコードでいっぱいです。