FB.initはすでに呼び出されています 質問する

FB.initはすでに呼び出されています 質問する

私は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";

おすすめ記事