2012年10月16日火曜日

koalaを使ってRuby on RailsでFacebookアプリ開発 ①

Ruby on RailsでFacebookアプリを開発しようといろいろを情報を探していて、最終的にはKoalaというライブラリがFacebook Graph APIを扱うのに一番使いやすそうなので、試してみました。

まずは、インストールですが、Gemfileに以下の行を追加。

 gem 'koala'

そして、bundle installを実行して完了。

次に利用方法です。以下のようにKoala:Facebook::API.newにアクセストークンを渡すことでOKです。戻り値のgraphに対してget_objectなどのメソッドをコールして、Facebookのデータにアクセスします。以下の例は自分の情報を取得しています。

 # koalaでFacebook Graph APIにアクセス
 graph = Koala::Facebook::API.new(アクセストークン)
 me = graph.get_object("me")

こんな簡単に利用可能です。ただし、一番ひっかかったのはこのアクセストークンをどうやって取得するかに悩まされましたので、メモっておきます。(結構面倒くさい・・・)

まずは、developers.facebook.comで新規アプリを作成して、アクセストークンを取得するためのURLを登録します。(テスト時はlocalhostでもOKです。)

次に以下のクライアントから以下のようにブラウザでアクセスしますと、Facebookのログインやアプリ承認画面が表示され、承諾すると登録したURLにリダイレクトされます。
https://graph.facebook.com/oauth/authorize?client_id=<ここにFacebookのapp ID>&redirect_uri=<上記登録したURL>&scope=<アプリがアクセスできる範囲>
このとき、リダイレクトされたサイトに"code=XXXX"というパラメータ("XXXX"はバリデーションコード)が渡ってきますので、このコントローラ内でバリデーションコードを取得し、さらに以下のURLにコントローラ内からアクセスするとアクセストークンがテキストで取得できます。(access_token=ZZZZという形式。)
https://graph.facebook.com/oauth/access_token?client_id=<Facebookのapp ID>&redirect_uri=<自分のFacebookアプリのトップヘージ>&client_secret=<アプリのシークレットキー>&code=<バリデーションコード>
これでやっとアクセストークンが取得できますので、一番最初のkoalaのAPIに渡すことでFacebook Graph APIにアクセスできるようになります。

なんとか、私はこれで成功することができました。あとは、友達情報取るのも、ウォールに書き込むのも簡単です。

# 友達の情報を取得
friends = graph.get_connections("me", "friends")

ふぅ〜。。

0 件のコメント:

コメントを投稿