Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

FacebookのAPI仕様を調べてみた

f:id:septeni-original:20150722154031p:plain

こんにちは!@kakeyangです。

最近余りコードを書いてないなぁと反省しています。


限りなく個人的な理由でFacebookAPIを調べてみました。



以下に記載するのは、

基本的には公式マニュアルを意訳したものであり、必ずしも正しいとは限りません。

誤りがある場合は、ご指摘頂けると助かります。

また、APIの仕様は2011年1月26日現在のものです。

調査目的

  • 取れるデータはなに?
  • 取得に制限はあるのか? ex.回数、タイミングなど
  • FB側の更新の検知は可能か?
  • こちらから更新することは可能なのか?どこまで?

API利用規約

無し。本当か!?

Facebookのプライバシーポリシー

http://www.facebook.com/policy.php

【4. ユーザーが第三者と共有する情報】

アプリケーションおよびウェブサイトがユーザーに関する情報にアクセスするには、ユーザー情報の
使用を制限する条項(利用規約の第9条を参照)に運営者が同意する必要があり、弊社はアプリケーション
およびウェブサイトが承認された情報のみ入手できるよう、技術的な措置を講じています。

利用規約の第9条】

http://www.facebook.com/terms.php

以下、重要な点を抜粋。

2. 開発者がFacebookから受け取ったデータへのアクセスおよびその使用は、
  以下のように制限されるものとします。

1. 開発者は、アプリケーションの運営に必要なデータのみ要求するものとします。
2. 開発者は、プライバシーポリシーを策定して、使用するユーザーデータおよびデータの使用、
  表示、共有、または転送方法をユーザーに明確に示すとともに、プライバシーポリシーのURLを
  開発者アプリケーション内に記載するものとします。
5. 開発者は、ユーザーに関して弊社から受け取ったデータを広告素材に使用しないものとします。
6. 開発者は、ユーザーの同意があった場合でも、弊社から受け取ったデータを直接または間接を問わず、
  広告ネットワーク、アドマーケットプレイス、データブローカー、その他広告関連のツールセットに
  譲渡したり、それらとの関連において使用しないものとします。

3. 開発者は、ユーザーの同意を得ることなく、そのユーザーまたはそのユーザーのコンテンツから
  独自に収集した情報を弊社に提供しないものとします。

【開発者向け原則とポリシー(英文)】

http://developers.facebook.com/policy/

  • Facebook開発者の心構え(精神的な部分が主)に関する記載。

FacebookプラットフォームはFacebookの拡張であり、その責務は世界をよりオープンに、より密接にし、
共有する力を人々に与えることである。

主な機能

① Graph API

Graph APIFacebookプラットフォームの核であり、Facebook上のデータを読み書きすることを可能にする。

② Authentication

Facebook authenticationを使用することで、Graph APIを通じてFacebookユーザの行動があなたの
アプリケーションに相互作用させることが可能になり、PC/モバイル/デスクトップアプリに対し、
強力なシングルサインオンを提供する。

③ Social plugins

Social pluginsを使用することで、あなたのサイトにたった1行のHTMLを書くだけで、
魅力的なソーシャル体験を提供することができる。
サイト訪問者がログインすることなく、コンテンツを訪問者向けに最適化することができる。
ブログパーツ的な物。

④ Open Graph protocol

Open Graph protocolを使用することで、あなたのサイトはFacebookソーシャルグラフ
参加することができる。


取得できる情報

Facebook上の情報取得には「Graph API」を使用する。
以下、Graph APIで取得できる情報。

・Album

フォトアルバム。
アルバムそのもののオブジェクト情報、及び、アルバムに登録されている写真やコメントを取得可能。

・Application

登録されているアプリ。

・Checkin

チェックインを検索、参照、公開可能。

・Comment

コメントの内容やコメントしてくれたユーザ、「いいね!」などを取得可能。

・Event

イベントの場所や時間などを取得可能。

・FriendList

友達リスト

・Group

グループ。

・Insights

アプリやページ、ドメインの統計。

・Link

ユーザのwallで共有されているリンク。

・Message

個人あてのメッセージを取得。権限が必要。旧メッセージ送信システムに対応。

・Note

ノート。

・Page

Facebookのページ。Real-Time Updatesに対応。

・Photo

アルバムに登録されている写真。

・Post

プロフィールフィードの個人エントリ。

・Status message

ユーザwallのステータスメッセージ(今何してる?の部分)。

・Subscription

未調査

・Thread

新メッセージシステムでのメッセージスレッド。
ユーザスレッドにアクセスするには、権限が必要。

・User

ユーザプロフィール。Real-Time Updatesに対応。

・Video

動画

書き込み

ほとんどの書き込み操作は権限の拡張(Extended permissions)が必要。
認証のステップでユーザーに拡張した権限の移譲を行わせる方法についてはAuthentication guideを参照のこと。
※未調査

更新の検知

Real-time Updatesを使用することで、Facebook側の情報の更新を検知可能。
Real-time UpdatesはGraph APIの機能の一部。

※Real-time Updatesに関しては、もう少し調査してみようと思っています。



という感じです。

気が向いたらサンプルとかも載せようと思います。