Graph API

Graph APIを利用することで、Facebookのさまざまなオブジェクトへアクセスできます。

目次
Connections URL
Friends https://graph.facebook.com/ID/friends?access_token=...
News feed ※ outdated https://graph.facebook.com/ID/home?access_token=...
Profile feed (Wall) https://graph.facebook.com/ID/feed?access_token=...
Status https://graph.facebook.com/ID/statuses?access_token=...
Likes https://graph.facebook.com/ID/likes?access_token=...
Movies https://graph.facebook.com/ID/movies?access_token=...
Music https://graph.facebook.com/ID/music?access_token=...
Books https://graph.facebook.com/ID/books?access_token=...
Notes https://graph.facebook.com/ID/notes?access_token=...
Permissions https://graph.facebook.com/ID/permissions?access_token=...
Photo Tags https://graph.facebook.com/ID/photos?access_token=...
Photo Albums https://graph.facebook.com/ID/albums?access_token=...
Video Tags https://graph.facebook.com/ID/videos?access_token=...
Video Uploads https://graph.facebook.com/ID/videos/uploaded?access_token=...
Events https://graph.facebook.com/ID/events?access_token=...
Groups https://graph.facebook.com/ID/groups?access_token=...
Checkins https://graph.facebook.com/ID/checkins?access_token=...
Objects with Location https://graph.facebook.com/ID/locations?access_token=...

APIのURL

ユーザー情報

URL 対象ユーザー
https://graph.facebook.com/me/
認可ユーザー
https://graph.facebook.com/ID/
IDで指定したユーザー
https://graph.facebook.com/username/
ユーザーネームで指定したユーザー

ユーザーに関するすべてのGraph APIへは、このURLを基本にアクセスします。またこの基本URLへアクセスしたときには、そのユーザーのプロパティが返されます。たとえばFacebook Platformのプロパティは、

https://graph.facebook.com/19292868552 (IDで指定)
https://graph.facebook.com/platform (ユーザーネームで指定)

で取得できます。その内容は、

{
    "id" : "19292868552",
    "name" : "Facebook Platform",
    "picture" : "http://profile.ak.fbcdn.net/hprofile-ak-ash2/276791_19292868552_1958181823_s.jpg",
    "link" : "http://www.facebook.com/platform",
    "likes" : 4801185,
    "cover" : {
        "cover_id" : "10150835335278553",
        "source" : "http://a6.sphotos.ak.fbcdn.net/hphotos-ak-ash3/s720x720/547890_10150835335278553_344659408_n.jpg",
        "offset_y" : 32
    },
    "category" : "Product/service",
    "is_published" : true,
    "website" : "http://developers.facebook.com",
    "username" : "platform",
    "founded" : "2007",
    "company_overview" : "Facebook Platform enables anyone to build social apps on Facebook and the web.",
    "mission" : "To make the web more open and social.",
    "about" : "We're building the social web. Get the latest here: developers.facebook.com ",
    "were_here_count" : 1,
    "talking_about_count" : 18760
}

のようなものです。User | Facebook Developers

ユーザーネーム (username)

ユーザーネームは、ユーザーのページURL「http://www.facebook.com/username」で使用されている文字列です。これは初期状態では存在せず、ユーザーネーム (ユニークURL) で取得できます。Facebookページのユーザーネーム(ユニークURL)の設定方法

ユーザーネーム (username) とネーム (name) は異なります。ユーザーネームはユーザーを識別する一意の名前であり、ユーザーページのURLに使用されます。一方でネームはただの表示上の名前であり、任意の名前を設定できます。

ユーザーネーム (username)

自分のプロフィールページ(http://www.facebook.com/●●●)の「●●●」の文字のことです。ユーザーネームは一度だけ変更できます。ただし、すでに他のユーザーが使用している場合は、そのユーザーネームは取得できません。

ユーザーネームとは - Facebook navi[フェイスブックナビ]

Pictures (写真)

<img src="https://graph.facebook.com/ID/picture" />
typeパラメータ
幅 [pixel] 高さ [pixel]
square 50 50
small 50 可変
normal 100 可変
large 200 可変

http://graph.facebook.com/platform/picture?type=large のようにアクセスすると、実際に画像があるURLへリダイレクトされます。

Paging (ページング)

取得結果をフィルタするには、次の3つの形式があります。

  1. Offset-based
    • offset … 取得結果の最初からのオフセット
  2. Time-based
    • until … 指定時間※1より前 (古いデータ)
    • since … 指定時間※1より後 (新しいデータ)
  3. Cursor-based
    • before …
    • after …

そしてそれぞれにlimitで、取得数の上限を指定できます。Pagination | Facebook Developers

※1 時間は、UNIX時間で指定します。

新着データの取得

2012/1/1 00:00:00より新しいデータを、上限数25で取得する場合を考えます。

このとき2012/1/1 00:00:00がUNIX時間で1325343600であることから、

https://graph.facebook.com/me/feed?since=1325343600&limit=25

となります。

指定期間のデータの取得

2012年の1月の、1か月間に投稿されたデータを取得する場合を考えます。

2012年の1月は2011/12/31 23:59:59より後で、2012/2/1 00:00:00より前と表せます。そしてそれぞれのUNIX時間が1325343599と1328022000であることから、

https://graph.facebook.com/me/feed?
    since=1325343599&until=1328022000

となります。

期間は「since~until」の時間で指定するため、パラメータの値はつねに「since < until」の関係となります。

これと同一の指定をField Expansionでするならば、

https://graph.facebook.com/me
    ?fields=feed.since(1325343599).until(1328022000)

とします。

connections (コネクション)

 

Field Expansion (複数APIの一括呼び出し)

複数のGraph APIの呼び出しを一括して行えます。Field Expansion | Facebook Developers

GET https://graph.facebook.com/ID?fields=FIELD_NAME1,FIELD_NAME2

たとえばログインユーザーのnameとbirthdayを取得するには、

https://graph.facebook.com/me?fields=name,birthday

とします。

feedのmessageとcommentsフィールドのみを取得するには、

https://graph.facebook.com/me?
    fields=feed.fields(message,comments)

とし、feedのmessageとcommentsフィールドのみを2件取得するには、

https://graph.facebook.com/me?
    fields=feed.limit(2).fields(message,comments)

とします。または、

https://graph.facebook.com/me?
    fields=feed.fields(message,comments).limit(2)

のように順序を入れ替えても意味は同じです。

取得例

たとえば、

https://graph.facebook.com/me?fields=home,feed

としてニュースフィードウォールの情報を一括して取得したときは、

{
    "id" : "0000",
    "home" :
    {
        "data" : [
            {
            ...
            }
        ],
        "paging" :
        {
            "previous" : "https://graph.facebook.com/0000/home?limit=25&since=...",
            "next" : "https://graph.facebook.com/0000/home?limit=25&until=..."
        }
    },
    "feed" :
    {
        "data" : [
            {
            ...
            }
        ],
        "paging" :
        {
            "previous" : "https://graph.facebook.com/0000/feed?limit=25&since=...",
            "next" : "https://graph.facebook.com/0000/feed?limit=25&until=..."
        }
    }
}

のように2つのデータが連結された形式で返されます。