LoginSignup
15
15

More than 5 years have passed since last update.

Facebook API v1.0 -> v2.0 の際のUser IDの挙動についてのメモ

Last updated at Posted at 2014-12-25

Facebook Graph API がバージョニングを始め、v2.0を提供するにあたって、今まで一意だったUser ID(Original User ID)の代わりに、アプリ個別のUser ID(App-scoped User ID)が返ってくることになった。

これからFacebookアプリを作る人は大丈夫だが、既存のアプリを移行する+Web版もMobile App版も存在するとなると、話は結構ややこしくなる。
ここでは、そういった話についてまとめる。

基本的な移行時の挙動

  • v2.0の時にユーザー登録した人はApp-scoped IDになる。
  • v1.0の時に既にユーザー登録していた場合App-scoped IDはOriginalのままになる

バージョンが混ざった時の挙動

携帯ではv1.0, Webではv2.0になっているということもあるのでそういった時に生じる挙動

  • v2.0で新規作成されたユーザーがv1.0でアクセスすることも出来る
  • v2.0でApp-scoped IDが付与されると、v1.0でアクセスしてもそのApp-scoped IDが返ってくる
  • 一度v2.0でログインしてしまうと友達情報はアプリを使っている友達のみの情報になってしまう

Once a user has logged into an app using version 2.0 (or later), calling this edge for v1.0 will continue to return the later version's response.
https://developers.facebook.com/docs/graph-api/reference/v1.0/user/friends

ここでv1.0の結果が返ってくるかどうかは
https://developers.facebook.com/tools/debug/accesstoken
のUser IDの項目にUser last installed this app via API v1.0と書いているかどうかで判断できるみたい。
(どこにも書いてないけど、実験した限りそうっぽい。)

ユーザーのアプリ間での同一性判定について

2015年の5月以降に全く別のアプリで同じユーザーを突合するのは基本的には不可能になった。

v1.0ではID的な役割であったusernameというものもあったが、それもv2.0では廃止になっている。

もちろん、名前とかプロフィールとかを総合的に見て、賢く突合する事はできるし、2つの異なるアプリのApp-scoped User IDが同じ人のものかどうかは、リダイレクトを元に判断できる。(今後リダイレクトしなくなる可能性もあるけど)
大量のUser IDのリストのマッピングは、賢くやれば出来るとはいえ、とてもめんどくさくなっていると言える。

ただし、同じ会社のアプリなどでは、Business Manager を用いると対応マッピングを得ることが出来る。

バージョンを指定しないアクセス、古いバージョンのアクセスについて

  • バージョンを指定しないアクセスは、その時そのアプリが使える一番古いAPIアクセスになる
  • APIのバージョンが期限切れになった場合、期限が切れていない一番古いAPIアクセスになる

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15