私はFacebookのiframeアプリを構築しています。私のアプリケーションは一度読み込まれ(signed_requestを一度受信します)、その後、内部ドメインリンクを使用してiframe内のページをナビゲートします。ChromeとFirefoxの両方でこれらの奇妙なメッセージが表示されることに気付きました。
FB.init has already been called - this could indicate a problem
このメソッドは 1 回だけ呼び出されると確信しており、Facebook はアプリケーションの読み込みごとに 1 回 (ページごとに 1 回ではなく) 呼び出すことを望んでいるようです。
window.fbAsyncInit = function() {
FB.init({
appId: param('facebook_app_id'),
frictionlessRequests: true,
oauth: true,
channelUrl: site_url('/channel.html')
})
}
ここで私が犯している間違い(もしあれば)は何でしょうか?
ベストアンサー1
js.src
パラメータを渡した瞬間から#xfbml=1&appId=X
、FB SDK は自動的に初期化され、FB.init
再初期化を試みます。そのため、コード内で関数を削除する必要はなくFB.init
、JS SDK を非同期にロードするコードでパラメータを渡さないようにしてください。
これを置き換えます:
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=X";
と :
js.src = "//connect.facebook.net/en_US/sdk.js";