Love PG , Liquor & Music

プログラマー備忘録やお酒や音楽

Facebook APIについてのメモ

GIT HUB Fontが公開されたので早速入れてみました。

猫みたいなタコみたいなキャラかわいいです(^^)/

 

f:id:gwaan_so:20140617215035j:plain

 

GitHubで使用されているアイコンフォント「Octicons」が一般公開を開始 - GIGAZINE

 

 

さて、そろそろFacebook APIを参考にRESTなAPIを作ろうと思って、FacebookAPI仕様を調べるために1冊読んでみました。

 

facebookアプリケーション開発ガイド (アスキー書籍)
 

 

発売日が今年の2月20日だったので、比較的新しめな情報が載ってるのかなーと購入。(購入したのは確か4月頭)

買ってすぐざっくり全部読んで、細かいところや機能を理解するためにぼちぼち読んでいってたのですが、購入後わずか半月の4月30日、Facebook API Ver2へのメジャーアップデートが行われこの本がゴミと化してしまいました。。。ショック。

 

Upgrading from Version 1.0 to Version 2.0(https://developers.facebook.com/docs/apps/upgrading)

 

アップデートではAPIのIFが変わったり、制限が変更したりしたくらいなので内容を理解しとけば特に問題なくVer2へシフトできそうなのですが、僕が本を買う目的は絵や図とともにわかりやすい解説を求めているのであって、ここにも変更が入るとなかなかイメージがつきにくかったりします。

文献だけだったらDOCSでもいいわけですし。

 

大まかなAPI変更点については詳しく翻訳してまとめているブログを見つけたのでメモ代わりに張っておきます。Facebook Graph API 2.0について - Qiita

 

Facebook APIって?

 自前で作ったアプリをFacebookを通じてソーシャルなものにすることができるAPIです。Facebook Graph APIのことを今回は取り上げます。

 

何ができるの?

前の記事でもちらっと書きましたが、Facebookで登録されている情報のほとんどが取得できます。

 

どんなふうに使われてるの?

WEBサービスの会員登録時や、ゲームでのフレンド機能とかに使われてます。

たとえば、みんな大好き価格COMの会員登録はこのFacebook認証を使って登録できます。

登録画面にFacebookアカウントでログインってボタンがありますよね。

f:id:gwaan_so:20140618140829j:plain

 

ここを押すと・・・

名前を入力していないのに僕の名前が表示されました!あとこのほかにもメールアドレスや生年月日の項目も設定されています。

f:id:gwaan_so:20140618140907j:plain

 

まあ、こんな使われ方が一般的かなーっと思います。

他にも、購入した商品に自動的にいいねさせたり、購入した商品の写真をシェアしたりグループへ通知したりとか使いようによってはいろいろなことができます。

取得だけじゃなくて実際にFacebookの操作もできるってことなんですよね。

ちなみにここら辺のAP間連動の権限譲渡に関するセキュアな仕組みが前のエントリーで書いたAuth2.0によって実装されています。

【AOuth2.0とは?】なぜFacebookでみんな出会い系に「いいね!」してるのか。 - Love PG , Liquor & Music

 

APIはどういう構成なの?

Facebookのオブジェクトは、各オブジェクト間がつながっており下のようなGRAPHで構成されています。

f:id:gwaan_so:20140619002644j:plain

 この図では、

 ユーザー1がユーザ2と3と友達で、

 ユーザー1が投稿した写真にユーザー2がいいね!を押して、

 ユーザー1が投稿した写真にユーザー3がコメントして、

 そのコメントにユーザー2がいいね!を押している感じになってます。

実際にFacebookを使っててこんな構造を意識しませんが、内部的にはこんなグラフで構築されてるんですね。

 

オブジェクトには以下の種類があって、それぞれにRESTなIFが設けられています。

つまりHTTP通信でAPIを呼ぶことができるってことです。

 

 オブジェクト同士の繋がりをEdgeといって、リファレンスのEdgesでどのオブジェクトがどんなオブジェクトとつながってるのかを確認出来ます。

オブジェクトの種類にはどんなのがあるかというと 原文はGraph API Referenceにあります。ただ、すべて英語なので下に日本語と一言コメントを付け加えてますので参考程度に。

 

Root Nodes

EndpointRepresents

/achievement

(ゲーム状況)

Represents a user gaining a game achievement in a Facebook App.

Facebookアプリのゲームの達成状況とかのこと。ゲーム開発以外は使わない。)

/achievement-type

(ゲーム状況の種類)

A games achievement type created by a Facebook App.

Facebookアプリのゲームの達成状況の種類のこと。ゲーム開発以外は使わない。)

/album

(アルバム)

A photo album.

(フォトアルバム。アルバム共有サービスとかで使いどころはある!かも。)

/app

(アプリケーション)

A Facebook app.

Facebookアプリケーション。埋込み型のCanvasや価格コムなどの外部サイトなどFacebookからAuth受けてるアプリのこと。とれるけど使い道が思い浮かばない。)

/app-link-host

(アプリケーションのホスト)

An app link object created by an app.

Facebookアプリケーションのホスト先のこと。)

/comment

(コメント)

A comment published on any other node.

(投稿された記事や、写真についてるコメントのこと。使いどころがあるかわからない。)

/domain

ドメイン

A web domain claimed within Facebook Insights.

インサイトに関するドメインのこと?よくわからない。)

/event

(イベント)

An event.

(作成したイベントとか、開催日時と内容のこと。イベントへの招待とか参加するユーザーオブジェクトも紐づく感じ。外部アプリからイベント作成するときとかに使えるかも。)

/friendlist

(フレンドリスト)

A grouping of friends created by someone on Facebook.

(そのまま。FBで作成できる友達リスト。高校同級生とか仕事仲間とかそういったグループの情報のこと。そのグループのオーナーが紐付いてる。仕事仲間へ一斉通知とかそういう機能に使えるかも。)

/group

(グループ)

A Facebook group.

(フレンドリストとちょっと似てるけど、グループタブにあるやつのこと。フレンドリストと違うのは、ウォールがあるくらい。)

/link

(リンク)

A link shared on Facebook.

(投稿にURLをはると勝手に出る外部サイトのこと。)

/message

(メッセージ)

A Facebook message.

(ユーザー同士で送り合ってるメッセージのこと。いくら許可とっても、ここ見れちゃいかんだろ。)

/milestone

マイルストーン

A Facebook Page milestone.

(プロフィールみると、1986年に誕生しましたとか学校を卒業しましたとかのマイルストーンのこと。う~ん、使い道が・・・)

/photos

(写真)

Any photos attached to the milestone.

(時にはアルバムの中にある写真のこと。写真にはコメントとかイイねが紐づく。これも写真共有サービスとかで使えるかも。)

/object/comments

(コメント)

A set of comments on a particular object.

(/commentと同じ感じ。投稿/commentだったら投稿に関するコメントのこと。)

/object/likes

(いいね!)

A set of likes on a particular object.

(投稿とか写真に対するいいねのこと。)

/object/sharedposts

(シェア)

The shares of a particular object.

(投稿とか写真に対するシェアのこと。)

/object/insights

インサイト

Usage metrics for several types of object.

(投稿とか写真に対するインサイト情報のこと。平たく言うとアクセス解析的な感じ。)

/offer

(オファー)

An offer published by a Page.

(イベントに関する参加リクエストのこと。)

/page

(ページ)

A Facebook Page.

(そのまま。Facebookページのこと。)

/payment

(支払い)

Details of a payment made via Facebook.

(クレジット機能での支払いのこと。)

/photo

(写真)

A photo published to Facebook.

(photがいっぱい集まってphots。だと思う。)

/place-tag

(位置情報)

An instance of a person being tagged at a place in a photo, video, post, status or link.

(Map上に企業の場所とかお店の場所とか示したあれのこと。)

/post

(ポスト)

A post published to Facebook.

Facebookで一番使われている投稿機能のこと。これは外部サイトからとって解析したり、かってに卑猥な言葉を投稿させたりするのに使えそう。)

/review

(レビュー)

A review of a Facebook app.

(お店とかに評価をつけれるあれのこと。)

/status

(ステータス)

A status message or post published to Facebook.

(投稿にiPhoneから10分前に投稿しました~とか勝手に出るそれのこと。

/test-user

(テストユーザー)

A test user created by a Facebook app.

(開発者モードで作れるテストユーザーのこと。)

/thread

(スレッド)

A message thread in Facebook Messages.

(メッセージのスレッドのこと。あまり使ったこと無い。)

/user

(ユーザー)

A person using Facebook.

(登録されてるユーザー情報のこと。誕生日とか出身地とか。このオブジェクトへのアクセスが一番つかうと思う。)

/video

(ビデオ)

A video published to Facebook.

(投稿しているビデオのこと。)

 

で、すいません。全部使ったことがあるわけでないので間違っている部分もあると思います。それはその都度このページを修正してきます。

 

結構使いこなせれば面白いアプリ作れそうなので、ぼちぼち考えてきます~