酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

公開中のFacebook EventをGraph APIから取得する

最近Facebook Eventでイベントを立ち上げて、参加者に連絡をとるようなことが一般的になってきました。IT勉強会系でもFacebook Eventを活用する機会が少しずつ増えてきている用に思えます。

ということでFacebookのGraph APIからOpenなFacebook Eventを取得するためのRubyスクリプトを作成したので備忘録メモ共有です!


Gemのインストール

まずは、Facebook Graph APIへのAccessをサポートしてくれるGem 『nov/fb_graph』の導入です。

Gemfileに以下を追加して、bundle installを実行。

1
2
# Facebook Graph API
gem 'fb_graph'

Facebookのアクセストークンの種類

Facebookのアクセストークンで特に馴染みが深いのは、次の2つ。

  1. Facebookのユーザーに紐付いたトークン。有効期限が1~2時間のものと、60日間のものがある
  2. Facebook アプリに紐づくAccess Token。有効期限が1~2時間のものと、60日間のものがある

Facebookアプリの登録

アクセストークンを取得するためにはその前にFacebookアプリのApp ID, アプリのシークレットキーが必要。

ということで、Facebook DevelopersからFacebookアプリのApp ID, アプリのシークレットキーを取得。

Facebookのアクセストークの取得

Userアクセストークンは『Graph API Explorer』から取得できます。Userアクセストークンは、「アクセストークンを取得」 => 「Select Permissions」でパーミッションを指定することができます。

このままだとアクセストークンの期間が短いので、有効期限を60日間に延長します。

1
https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=<App ID>&client_secret=<アプリのシークレットキー>&fb_exchange_token=<Graph API Explorerで取得したアクセストークン>

このURLにブラウザでアクセスすると、有効期限が60日のアクセストークンが取得できます。

Facebook Graph APIから公開Eventを取得。

ようやくFacebook Graph APIにアクセスするためのアクセストークンを取得できました。

ということで、早速Rubyスクリプトからアクセス。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Eventを検索するためのキーワード
keyword = "ハッカソン"

# 上で取得したFacebook Userのアクセストークン
access_token = 'xxxx'

# Facebook Eventの公開されているイベントを検索 (sinceは未来のeventに限定する条件)
events = FbGraph::Event.search(keyword, access_token: access_token, since: Time.now.to_i)

# Eventの詳細情報の取得
events.each do |event|
    detail = FbGraph::Event.fetch(event.identifier, access_token: access_token)

    # 公開されているイベントのみ
    if detail.privacy == "OPEN"
        # detail をゴニョゴニョ
    end
end

ということで、Facebook Eventがますます身近になりそうです!

所感

Facebookのアクセストークンまわりは昔から何度もトライしていますが、未だにちゃんと理解しきれていないです。もし間違っている部分にお気づきの方がいれば、ぜひコメント下さい^^

おまけ:Facebookアプリに紐づくアクセストークンの取得

Facebookアプリに紐づくアクセストークンは、『Access Token Tool』から取得できます。

Special Thanks

Facebook API - アクセストークン! - mk-mode BLOG

Search Facebook events and pagination (Graph API) - Stack Overflow

おすすめの書籍