Facebookのソーシャルプラグインはサイト制作において欠かせないアイテムになって来ましたね。
自分も仕事でよくいいねボタンや Like Box (Facebookページのウォールとかを出せるやつ)を設置しますが、ある日突然サイトによっては
FB.getLoginStatus() called before calling FB.init().
というエラーが出るようになり困っていたのですが、ようやく解決方法が見つかったのでメモしておきます。
何が起こったのか?
エラーのないようですが、Chromeのデベロッパツールでみるとこんな感じ
これってなんなんだろうなと思っていろいろ調べてみたのですが、
どうもアプリケーションIDを持たない LikeBox プラグインを設置している場合、このエラーが出るようです。
治し方
対策としては、ページ用のAppIDを取得したうえで、呼び出しコードの
1 |
js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; |
で終わっている部分に
1 |
js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1&appId=(取得したアプリケーションID)"; |
という風に追記すればいいみたいです。
または、アプリケーションIDを発行したアカウントで改めてソーシャルプラグインのコードを取得しなおせば一番確実だと思います。
参考リンク
javascript – FB.getLoginStatus() called before calling FB.init() – Stack Overflow
補足
ちなみにこれもともとは、クライアントさんのサイトで LikeBox のウォール(stream)が出なくなる問題について調べててこのエラーを見つけたのですが、今回の対策でエラーは消えたものの、ウォールが出ない問題は解消されませんでした。
そもそもこの問題は、LikeBoxで表示させているFacebookページの更新が一定期間ないと発生すると言われているので、そちらを疑ってクライアントさん側になんでもいいからウォールを更新してもらえるよう依頼していますが、まだ更新できてないようなので本当にこれで解消できるかも不明です。
コレに関してはまた変化があり次第記事にしたいと思います。
ってことで終わりたかったのですが…。
解決かと思ったら新たな問題が…
後から気づいたのですがこれ、Facebook公式のWordPressプラグインFacebook for WordPressでも発生してしまうのですけど、この場合はどうしたもんでしょうねぇ。
プラグインにはAPPIDもSecretも入ってますが…。
うーん。なんか設定を間違えているのか、他のプラグインとぶつかってるのか……
とりあえずしばらくはアップデートがないか待ちつつ様子を見てみますかねぇ。
コメントする