Facebook API v2.1リリース Facebookアプリは作成日時点の最新バージョンのAPIしか使えない

8.12
2014

v2.1

つい先週まで、Facebook API v2.0の話題だったというのに、もうv2.1がリリースされてしまいました。
v2.1における変更点が複数ありますが、詳細についてはすでにまとめているサイトも多いので適当にググってください。

Graph API v2.1出ました : Facebook開発者向けドキュメントの日本語訳とTips
http://facebook-docs.oklahome.net/archives/52179589.html

今回の変更で大きいモノだけピックアップします。

なお、原文は以下です。

Facebook Platform Changelog
https://developers.facebook.com/docs/apps/changelog

friends APIで友達の数を取得できるようになった

friend4

先日、「Facebook API v2.0で、フレンド数やフレンド一覧を取得する方法」という記事を書きましたが、この仕様、v2.1のタイミングで実装され、合わせてv2.0にも遡及して適用されたものだったんですね。
なるほど。

FQL形式でのデータ取得および、REST APIが完全に廃止

その昔、FacebookのAPIはFQL形式で呼び出していました。また、その後REST API(厳密には、当時は「REST」はついていなかった)と呼ばれるAPIが登場。
さらにその後で、Graph APIと呼ばれるものが登場し、その中でv1.0、v2.0、v2.1と進化してきています。

初期のFQL形式またはREST APIについては、先日までは一応動いてましたが、公式のdocsでは結構前から利用は非推奨となっており、今回ついに動作しなくなったようです。

ファンゲート廃止及びポリシーの変更

これは先日先行して「Facebookページの「ファンゲート」 終 了 のお知らせ(2014/11/5まで)」という記事にまとめました。

大きく二つの要素があります。

  1. プラットフォームポリシーで、「ページへのいいね!」に対してインセンティブを与えることが禁止された(ポリシー変更)
  2. signed_requestのlikedフィールドの返り値が常にtrueになるためアプリの「ファンゲート」機能が使えなくなる(仕様変更)

この2つは別の話で、
1のポリシー変更は、11/5から適用されます。
2の仕様変更の方は、8/7以前に作成していたアプリは11/5に適用。8/7以降に作成したアプリは即日適用されます。

Facebookアプリの作成日以降のバージョンのAPIしか利用できない

さて、細かい仕様変更については一旦置いておいて、このFacebookのバージョニングについて改めてまとめておきます。

Facebook Platform Versioning
https://developers.facebook.com/docs/apps/versions#versioning

上記のサイトにある通り、v2.0以降については、新バージョン(今回ならv2.1)がリリースされるても、その日から2年間、旧バージョン(今回ならv2.0)が使えます。これは移行のための猶予期間のようなものです。
ただしこれは、あくまでもその「新バージョンがリリースされた日」よりも前に作成されたアプリの場合の話です。

ややこしい話なのですが、「新バージョンがリリースされた日」を起点に、その日よりも前に作成したアプリでは古いバージョンと新しいバージョンの両方が使えますが、「新バージョンがリリースされた日」よりも後に作成したアプリでは、古いバージョンは利用できずに新しいバージョンのみが利用できる形となります。

versioning

つまり、Facebookアプリは作成日の時点で最新のバージョンのAPIを利用することになり、過去のバージョンのAPIは利用できません。
ただし、作成日以降に新しいバージョンのAPIがリリースされた場合は、その移行猶予期間が2年間あります。

この辺は、「APIのバージョン指定をしない場合は、自動的に最も古いバージョンのAPIが呼び出される」というような表記もあるので混乱しそうですが、ここで言う「最も古いバージョン」は、あくまでもアプリ作成時点の最新バージョンがキャップとなります。

なお、利用しているアプリが現在どのバージョンのAPIを利用しているかが、HTTPヘッダで返ってくるようになりました。
ためしにFirefoxのプラグイン、Live HTTP headersで確認。

api-ver-header

今後は、施策の度にFacebookアプリを作成しているようなケースでは、昨日まで想定していた仕様が今日作ったアプリでは使えなくなるということも考えられるので、仕様を検討する前に、まずは先に空のFacebookアプリを作成することから始めるようにしないといけません。

例えば、先日8/7よりも以前に企画・設計をし、仕様も含めてFIXしたキャンペーンのアプリを作成した日が8/8だとすると、下手をすれば死人が出ますw

サポート期間内であれば古いバージョンのAPIも使えるようにしてくれればいいんですけどね・・・。

このルールだと、以下にたくさんのアプリをストックしておくか、ということにもなりかねず、大量の空アプリを作ってストックしておいて、運悪くバージョン変更の憂き目にあった会社に対してそれを有料で売るようなビジネスが成立しますね。

誰かやってみてください。