先日、FacebookのJava Script SDKを2015年4月30日までに変更する必要があると記事にしました。
JavaScript SDK を all.js からsdk.js に変更しましょう。(2015年4月30日までに)
https://snowadays.jp/2014/11/3307
この中で、いわゆるUnversioned Callをした場合は自動的にバージョンが選択されると書きましたが…
仮にバージョン指定がされていない場合は、appIdで指定されたアプリが利用できるAPIバージョンのうち最も古いものが自動的に選ばれます。
Facebookに確認したところ、どうやらこれは誤りだったようです。
まず、サイト内のJS SDKの記述をall.js からsdk.jsに変更した際に、APIバージョンを明記しないと動作しないことがわかりました。
■バージョンを指定したサンプル
https://snowadays.jp/test/fb_js_test1.html■バージョンを指定しないサンプル
https://snowadays.jp/test/fb_js_test2.html
サンプルをご覧いただくとわかると思いますが、後者ではプラグインが表示されていません。
Facebookの公式には、以下のような記載があります。
https://developers.facebook.com/docs/apps/versions#unversioned_calls
APIのバージョンを指定しないとどうなりますか?
Facebookでは、このような状態をバージョン指定のない呼び出しと呼びます。 バージョン指定のない呼び出しは、デフォルトで、一番古い利用可能なバージョンのAPIが呼び出されます
そのため、本件はバグかと思い、ためしにFacebookにBug Reportを上げてみました。
Unversioned call doesn’t work on “sdk.js”.
https://developers.facebook.com/bugs/680805065368328/
結論から言うと、この件はバグではなく「仕様」だそうです。
一度は「調べてみるよ」と言われたのですが、約3週間待たされた結果「実は、これ仕様なんだわ」とのこと・・・。
docsにあるUnversioned Callは、アプリからのAPIの利用の際に適用されるそうで、今回のケースのようにJavascript SDKをフロントに埋め込んで使うような場合には適用されないようです。
app IDの記載はJSでも必須なんだから、そこから自動で見てくれればいいのに・・・。
というわけで、ご注意ください。