[salesforce][facebook]Force.com APEXにおけるFaceBook Graph APIの使用について

By |10月 5, 2011|facebook, salesforce, |


先日の「F8」において様々な新機能が発表され、更に躍進を見せるFaceBookですが
ここでAPEXによる基本的なFaceBookGraphAPIの使用方法をまとめてみました。

①アクセストークン取得の流れ

事前準備
下記サイトにアクセスし、開発者の許可を行い、FaceBookアプリを作成しAppID、AppSecretを取得します。
https://www.facebook.com/developers/
<開発者の許可画面>

<アプリ作成画面>

1.Webアプリ上から、下記URLにGETパラメータを付加して、FaceBookの認証画面にリダイレクトを行います。
<認証ダイアログURL>
https://graph.facebook.com/oauth/authorize

パラメータ名
client_id AppID
redirect_uri FaceBook認証画面からリダイレクトされるURL
scope 使用するGraphAPIの権限(カンマ区切り)
<例>

[php]
PageReference pFbLogin = new PageReference(‘https://graph.facebook.com/oauth/authorize?client_id=AppID&redirect_uri=http%3A%2F%2Fsample.com%2F&scope=offline_access,read_stream’);
return pFbLogin.setRedirect(true);
[/php]

ログイン済みであれば下記のようなダイアログが表示されます。
(ダイアログの例では使用するGraphAPIの権限を全て設定した場合)

2.認証画面にてユーザが許可した場合、GETパラメータにcodeが付加された形式でリダイレクトされるので、下記URLにアクセスしAccessTokenを取得します。
<AccessToken取得URL>
https://graph.facebook.com/oauth/access_token

パラメータ名
client_id アプリ登録画面で表示されたAppID
client_secret アプリ登録画面で表示されたAppSecret
code GETパラメータ”code”の値
<例>

[php]
Http h = new Http();
Httprequest req = new Httprequest();
req.setEndpoint(‘https://graph.facebook.com/oauth/access_token?client_id=AppID&client_secret=AppSecret&code=code’);
req.setMethod(‘GET’);
HttpResponse res = h.send(req);
[/php]

3.上記の戻り値(res.getBody())が”access_token=アクセストークン”の形式で戻ってくるので、この値を保持しGraphAPIのアクセス時に使用します。
※アプリのアクセストークンについてはGraphAPIにおいてUser情報のme/accountsから取得できます。
(後述参照)

②GraphAPI全体概要

名前 注釈 取得 更新 AccessToken
User App
Achievement(Instance) Facebookアプリ(ゲーム)において、ユーザの実績(得点や進捗)を操作することが目的。
Album 写真アルバムの情報取得および作成。
Application 登録済みのAppに対して情報取得および更新が可能。アプリの新規作成/削除はAPIではできない。
Checkin チェックインIDを指定する事で場所やページのチェックイン情報の取得が可能。
Comment コメントIDを指定する事でコメントの情報取得、削除が可能。
Domain パラメータにFaceBookアプリ内で使用しているドメインを指定する事で情報取得。
Event イベントIDを指定しイベントの情報取得。
FriendList 友達リストIDを指定し友達リストの情報取得。
Group グループIDを指定しグループの情報取得。
Insights 管理しているFaceBookページやアプリのIDを使用して、各種統計情報が取得可能。
Link 投稿されたリンクのIDを指定する事で情報取得が可能。
Message メッセージIDを指定する事で情報取得が可能。(現在はAPI開発中で今後機能拡張が行われる予定)
Note ノートIDを指定する事で情報取得が可能。
Page ページIDを指定する事で情報取得が可能。(ページで取得できる項目については、今後ユーザの年齢や管理者のみの制限、特殊ページにおける項目追加が発生するかもしれない)
Photo 写真IDを指定する事で情報取得が可能。
Post フィードに表示されている個々の情報のIDを指定する事で、フィード上に表示されない情報が取得可能。 △削除のみ
Review アプリIDを指定する事でレビュー情報が取得可能。
Status message ウォールに表示されている個々の情報に対して、GraphAPIで扱われるステータス情報が取得可能。
Subscription ページ・アプリで使用している情報をリアルタイムに取得する事が可能。
Thread 将来リリースされる新しいメッセージシステム
User ユーザの情報。ユーザIDを指定する事で各情報の取得が可能。
Video 動画IDを指定する事で動画情報が取得可能。(ファイルの対応形式は本家リファレンス参照)

③APIのURIおよび戻り値

・アクセス方法
https://graph.facebook.com/ユーザID・ページIDなどオブジェクトのID(meを指定した場合はログインユーザ)/APIの種類(指定しない場合はユーザデータ)/?access_token=アクセストークン

・APIの種類

名前 注釈 User Page App
自分 友達 他人 いいね!有 いいね!無
accounts 所有するアプリ、ページのデータを取得
achievements 使用しているFacebookアプリ(ゲーム)の実績データ
activities プロフィールの好きなアクティビティデータ
admins ページ管理データ(ページのアクセストークンを使用する) △管理者のみ
albums アルバムデータ
apprequests 使用しているFacebookアプリからの通知データ
banned ページ管理者がブロックしているユーザリスト(ページのアクセストークンを使用する) △管理者のみ
blocked ページ管理者がブロックしているユーザリスト(ページのアクセストークンを使用する) △管理者のみ
books プロフィールで選択した好きな本
checkins チェックインの一覧
events イベントの一覧
family 家族の一覧
feed ユーザの投稿一覧
friendlists 作成した友達リスト一覧(スマートリストも含まれる)
friendrequests 承認していない友達リクエストの一覧
friends 友達一覧
games プロフィールで選択した好きなエンターテイメント
groups 所属するグループの一覧
home 自分のホームに表示されているフィード一覧
inbox メッセージの一覧
insights 管理しているFaceBookページやアプリの各種統計情報 △管理者のみ
interests プロフィールで選択した好きな趣味・関心
likes 「いいね!」の一覧
links 自分の投稿にリンクがあるデータのみ抽出した一覧
movies プロフィールで選択した好きな映画
music プロフィールで選択した好きな音楽
mutualfriends 友達の共通の友達一覧GETパラメータにuserを指定して確認する友達IDを指定。
notes ノート一覧
notifications ユーザの通知一覧
outbox メッセージの送信一覧(inboxと項目は一緒だが送信を行ったデータのみ取得可能)
reviews メッセージの送信一覧(inboxと項目は一緒だが送信を行ったデータのみ取得可能)
payments アプリ内の課金データ
permissions 当アプリ内のユーザの権限
photos タグ付した写真一覧
picture ユーザのプロフィール画像
pokes ユーザのあいさつ一覧
posts 自分から発信した投稿や友達になった時のデータ一覧
scores 使用しているFacebookアプリ(ゲーム)の点数データ
staticresources ユーザの投稿に対するいいね!やコメントの一覧 △管理者のみ
statuses ユーザの投稿に対するいいね!やコメントの一覧
settings 投稿設定情報(ユーザーによるウォール投稿許可、ユーザーによる写真の追加許可、投稿した写真へのタグ付け許可、ユーザーによる動画の追加を許可)の取得(ページのアクセストークンを使用する) △管理者のみ
subscriptions ユーザの投稿に対するいいね!やコメントの一覧 △管理者のみ
tabs タブの一覧情報(ページのアクセストークンを使用する) △管理者のみ
tagged タグ付されたデータ一覧
television プロフィールで選択した好きなテレビ
updates 更新したメッセージデータ
videos タグ付した動画一覧

・APIの戻り値(picture以外はJSON形式)

accounts

第1階層 第2階層 項目説明
data
配列
name アプリ・ページ名
access_token アプリ・アクセストークン
category カテゴリ名
id アプリID
activities

第1階層 第2階層 項目説明
data
配列
name アプリ・ページ名
category カテゴリ名(デフォルトはInterrest?)
id アプリID
admins

第1階層 第2階層 項目説明
data
配列
name 管理ユーザ名
id 管理ユーザID
albums

第1階層 第2階層 第3階層 項目説明
data
配列
id アルバムID
from
name ユーザ名
id ユーザID
name アルバム名
link アルバムのリンク先URL
cover_photo 表紙画像
count 写真数
type 種別(mobile,profile,wall等)
created_time 作成日
updated_time 更新日
blocked

第1階層 第2階層 項目説明
data
配列
name ブロックユーザ名
id ブロックユーザID
books

第1階層 第2階層 項目説明
data
配列
name 本の名前
category カテゴリ
id 本のid
created_time 作成日
checkins

第1階層 第2階層 第3階層 第4階層 項目説明
data
配列
id チェックインID
from
name ユーザ名
id ユーザID
message チェックイン時のコメント
place
id 場所ID
name 場所名
location
street 住所番地
city 住所市区町村
country 国名
zip 郵便番号
latitude 緯度
longitude 経度
application
name チェックインアプリ名
canvas_name チェックインアプリの使用したページ名
id アプリID
created_time 作成日
events

第1階層 第2階層 項目説明
data
配列
name イベント名
start_time 開始時刻
end_time 終了時刻
location 場所名
id イベントID
rsvp_status (Attending,Unsure,Declined,NotReplied)
family

第1階層 第2階層 項目説明
data
配列
name ユーザ名
id ユーザID
relationship 関係(wife,sister,cousin,unknown等)
feed

第1階層 第2階層 第3階層 項目説明
data
配列
id フィードID
from
name 投稿ユーザ名
id 投稿ユーザID
message 投稿内容
story ステータスの変更内容、友達になった場合の通知文字、いいね!ボタン押下時の通知文字等
story_tags
配列
id 関連タグID
name 関連タグ名
offset story_tags内においてカテゴライズされたキーのような値がセットされる
length 用途不明
picture 関連画像URL
link 関連リンク先URL
name フィード名
caption フィードの説明
properties ※フィードの内容がシェア当の場合に設定される。
name フィードのステータス(”By”といった文字列が設定される)
text フィードの作成者名
href フィードのリンク先
icon フィードのアイコンURL(Twitter連動の場合はTwitterのアイコン。)
actions
配列
name アクション名
link アクションを行うURL
privacy
description 公開範囲ステータス(Public等)
value 公開範囲(EVERYONE等)
allow 許可数
deny ブロック数
type フィード種別
object_id 関連したオブジェクトID(イベントやアプリ等のID)
application
name 関連アプリ名
id 関連アプリID
created_time 作成日
updated_time 更新日
friendlists

第1階層 第2階層 項目説明
data
配列
id 友達リストID
name 友達リスト名
friendrequests

第1階層 第2階層 第3階層 項目説明
data
配列
from
name 申請ユーザ名
id 申請ユーザID
created_time 作成日
unread 未読(true)
to
name 承認するユーザ名
id 承認するユーザID
friends

第1階層 第2階層 項目説明
data
配列
id 友達ユーザID
name 友達ユーザ名
games

第1階層 第2階層 項目説明
data
配列
name ゲームの名前
category ゲームカテゴリ
id ゲームのid
created_time 作成日
groups

第1階層 第2階層 項目説明
data
配列
version バージョン番号
name グループ名
id グループID
administrator 管理権限(True/False)
bookmark_order ソート順
home
・友達やいいね!を行っているページのフィードが表示される。※内容は割愛(feedを参照)
inbox

第1階層 第2階層 第3階層 第4階層 第5階層 項目説明
data
配列
id メッセージID
from
name 最初にメッセージを送信したユーザ名
id 最初にメッセージを送信したユーザID
to
data
配列
name 受信したユーザ名
id 受信したユーザID
subject メッセージタイトル
message メッセージ内容
updated_time 更新日
unread 相手の通知未確認件数
unseen 相手の未読件数
comments
data
配列
id メッセージID
from
name メッセージ送信ユーザ名
id メッセージ送信ユーザID
message メッセージ内容
created_time 作成日
metadata
connections
comments メッセージの送受信一覧
fields
name 項目名
description 項目説明
insights

第1階層 第2階層 第3階層 項目説明
data
配列
id idまたはURI
name 統計情報の名称
period 集計区分(day等)
values
配列
value
end_time 集計日
description 統計情報の説明
interests

第1階層 第2階層 項目説明
data
配列
name 趣味・関心名
category カテゴリ名
id 趣味・関心ID
created_time 作成日
likes

第1階層 第2階層 項目説明
data
配列
name いいね!したオブジェクトの名前
category いいね!したオブジェクトのカテゴリ
id いいね!したオブジェクトのID
created_time 作成日
movies

第1階層 第2階層 項目説明
data
配列
name 映画名
category カテゴリ名
id 映画ID
created_time 作成日
music

第1階層 第2階層 項目説明
data
配列
name 音楽名
category カテゴリ名
id 音楽ID
created_time 作成日
mutualfriends

第1階層 第2階層 項目説明
data
配列
name 友達のユーザ名
id 友達のユーザID
notes

第1階層 第2階層 第3階層 項目説明
data
配列
id ノートID
from
name ノート作成ユーザ名
id ノート作成ユーザID
subject ノートタイトル
message ノート内容(画像を含む)
icon ノートのアイコンURL
created_time 作成日
updated_time 更新日
notifications

第1階層 第2階層 第3階層 項目説明
data
配列
id 通知ID
from
name 通知を行ったユーザ名
id 通知を行ったユーザID
to
name 通知を受けたユーザ名
id 通知を受けたユーザID
created_time 作成日
updated_time 更新日
title 通知タイトル
message 通知内容
links 関連URL
application
name 関連アプリ名
canvas_name 関連アプリのページ名
id 関連アプリID
unread 通知未確認件数
outbox
・inboxと項目は同一
permissions

第1階層 第2階層 項目説明
data
配列
installed アプリインストール状況
status_update ステータスの更新権限
publish_checkins チェックインの更新権限
photo_upload 写真のアップロード権限
video_upload 動画のアップロード権限
sms メッセージの権限
offline_access ログインしてない状態のデータ使用権限
email メールアドレスの取得権限
create_event イベント作成権限
create_note ノート作成権限
share_item オブジェクトの公開権限
bookmarked ブックマーク
rsvp_event イベントの同行等の操作権限
read_stream フィード等の取得権限
publish_stream オブジェクトの更新権限
read_mailbox メッセージの取得権限
ads_management
read_friendlists 友達リストの取得権限
manage_friendlists 友達リストの更新権限
xmpp_login
read_insights
read_requests 友達承認待ちの取得権限
manage_notifications ユーザの通知情報の取得権限
manage_pages Fanページの管理権限
user_birthday ユーザの誕生日の取得権限
user_religion_politics ユーザの宗教情報の取得権限
user_relationships ユーザと特定の友達の関係(妻やいとこ)の取得権限
user_relationship_details ユーザと特定の友達の関係(妻やいとこ)の取得権限
user_hometown ユーザの出身地情報の取得権限
user_location ユーザの現住所の取得権限
user_likes ユーザのいいね!情報の取得権限
user_activities ユーザのアクティビティの取得権限
user_interests ユーザの活動の取得権限
user_education_history ユーザの学歴の取得権限
user_work_history ユーザの職歴の取得権限
user_online_presence ユーザのオンライン状況の取得権限
user_website ユーザのWebSiteの取得権限
user_groups ユーザのグループの取得権限
user_events ユーザのイベントの取得権限
user_photos ユーザの写真の取得権限
user_videos ユーザの動画の取得権限
user_photo_video_tags ユーザがタグ付した写真や動画の取得権限
user_notes ユーザのノートの取得権限
user_checkins ユーザのチェックイン状況の取得権限
user_about_me ユーザの基本情報の取得権限
user_status ユーザの直近の状況(更新したオブジェクト)の取得権限
friends_birthday ユーザの友達の誕生日の取得権限
friends_religion_politics ユーザの友達の宗教情報の取得権限
friends_relationships ユーザと特定の友達の関係(妻やいとこ)の取得権限
friends_relationship_details ユーザと特定の友達の関係(妻やいとこ)の取得権限
friends_hometown ユーザの友達の出身地情報の取得権限
friends_location ユーザの友達の現住所の取得権限
friends_likes ユーザの友達のいいね!情報の取得権限
friends_activities ユーザの友達のアクティビティの取得権限
friends_interests ユーザの友達の活動の取得権限
friends_education_history ユーザの友達の学歴の取得権限
friends_work_history ユーザの友達の職歴の取得権限
friends_online_presence ユーザの友達のオンライン状況の取得権限
friends_website ユーザの友達のWebSiteの取得権限
friends_groups ユーザの友達のグループの取得権限
friends_events ユーザの友達のイベントの取得権限
friends_photos ユーザの友達の写真の取得権限
friends_videos ユーザの友達の動画の取得権限
friends_photo_video_tags ユーザがタグ付した写真や動画の取得権限
friends_notes ユーザの友達のノートの取得権限
friends_checkins ユーザの友達のチェックイン状況の取得権限
friends_about_me ユーザの友達の基本情報の取得権限
friends_status ユーザの友達の直近の状況(更新したオブジェクト)の取得権限
photos

第1階層 第2階層 第3階層 第4階層 項目説明
data
配列
id 写真ID
from
name 写真をアップしたユーザ名
id 写真をアップしたユーザID
tags
data
配列
id タグ付を行ったユーザID
name タグ付を行ったユーザ名
x タグ付を行ったX座標
y タグ付を行ったY座標
created_time タグ付けを行った日
picture 写真ファイルのURL
source アップロードした写真のURL
height 写真の高さ
width 写真の幅
images
配列(4種類のサイズが用意される)
height 写真の高さ
width 写真の幅
source 写真ファイルのURL
link 写真の関連URL
icon アイコン画像のURL
created_time 写真の作成日
position 写真の表示位置
updated_time 写真の更新日
picture
・下記形式で指定する事で画像ファイルが取得できる
https://graph.facebook.com/[オブジェクトID]/picture
pokes

第1階層 第2階層 第3階層 項目説明
data
配列
to
name あいさつされたユーザ名
id あいさつされたユーザID
from
name あいさつしたユーザ名
id あいさつしたユーザID
created_time あいさつした日時
type poke
posts
・自分から発信した投稿や友達になった時のデータ一覧※内容は割愛(feedを参照)
statuses

第1階層 第2階層 第3階層 第4階層 項目説明
data
配列
id フィードID
from
name 投稿ユーザ名
id 投稿ユーザID
message 投稿内容
updated_time 投稿のの更新日
likes
data
配列
id いいね!したユーザID
name いいね!したユーザ名
comments
data
配列
id コメントしたユーザID
name コメントしたユーザ名
settings

第1階層 第2階層 項目説明
data
配列
setting 設定名
value 可否(True/False)
tabs

第1階層 第2階層 第3階層 項目説明
data
配列
id タブID
name タブ名
link タブのリンク先URL
application
name 関連アプリ名
canvas_name 関連アプリのページ名
id 関連アプリID
custom_name カスタム名 指定がない場合は自動的にセットされる
is_permanent タブの常時表示識別フラグ(True:False)
positions タブのソート順
is_non_connection_landing_tab いいね!をしていないユーザに対する表示有無(True:False)
tagged
・タグ付けされた投稿、画像、動画の一覧(feed,photo,videoを参照)
television

第1階層 第2階層 項目説明
data
配列
name テレビ番組の名前
category テレビ番組カテゴリ
id テレビ番組のid
created_time 作成日
updates
・説明は割愛(inbox参照)
videos

第1階層 第2階層 第3階層 項目説明
data
配列
id 動画ID
from
name 動画をアップしたユーザ名
id 動画をアップしたユーザID
name 動画のタイトル
description 動画の説明
picture 写真の関連URL
embed_html 動画の埋め込みHTML文字列
icon アイコン画像のURL
source アップロードした動画のURL
created_time 動画の作成日
updated_time 動画の更新日

FaceBookの機能およびAPIは逐次追加されるので、当記事も合わせて更新していきます。