FacebookのグラフAPIを簡単に試す方法

ハマって結構時間かかったのだが、一番シンプルな方法を書いとく。

Railsの基本環境は入ってるとします。

1. Koalaをインストール

KoalaというFacebookAPIの簡易なRubyラッパーライブラリがあるのでそれを使う。gemで一発インスコ

# gem install koala

2. Facebookアプリを作成してアプリIDを取得し、それでアクセストークンを取得

  • ブラウザに以下のURLを直接入力。(YOUR_APP_IDのところはアプリIDに置き換え)
https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token
  • URLがリダイレクトされて"Sucess"と表示されたらOK.そのときブラウザのURLに
https://www.facebook.com/connect/login_success.html#access_token=XXXX&expires_in=YYYY

という風に出てくる、そのXXXXをどっかにコピペっておく。

3. プログラム作成

# "test.rb"
require 'rubygems'
require 'koala'

access_token = '上で取得したアクセストークンXXXX' 

@graph = Koala::Facebook::API.new(access_token)

p @graph.get_object("masayuki.isobe.14")
p @graph.get_connection("masayuki.isobe.14","likes")

なおget_objectはアクセストークンがなくても(つまり認証しなくても)パブリックに公開されてるので取得できる。それだけが必要ならアクセストークンは不要で@graphをnewするときのパラメータは無しでOK。

4.実行

# ruby test.rb

あとはUnicode部分のutf8化など必要なら適当に。

所感

redirect先のURLがfacebookドメインのを指定できるってところが目からウロコ。知らない人多いんじゃないかな。

追記

ウォールへの投稿などするには、追加の権限が必要で、それは上記の2.のアクセストークンを取るところで、URICGIパラメータに"scope=許可して欲しい権限をカンマ区切りで並べる"を追加する。権限の種類はこちらを参照。例えば、ウォールへの投稿には"public_actions"権限が必要なので、

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&scope=public_actions&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token

という風に&でつなげればOK.これで取得したaccess_tokenであれば以降ウォールにプログラムから書き込める。