9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FacebookのリアルタイムアップデートAPIを利用する手順

Posted at

はじめに

Graph APIだとデータを取得する場合、リクエストを投げる必要があるのでデータ量が増えてくるとAPIリミットが気になってきます。そこで「Facebook側で変更があったら変更を通知してくれる」仕組みが欲しくなります。

Facebookではこれを実現するのに、「Receiving API Updates in Real-Time」という仕組みがあります。
Receiving API Updates in Real-Time https://developers.facebook.com/docs/graph-api/real-time-updates/v2.3

今回はFacebookページのデータをリアルタイムに取得するための手順をまとめました。

1. 開発用のFacebookアプリを作成

事前に開発用のFacebookアプリが必要なので作成しておきます。こちらの記事がわかりやすいです。
facebookのアプリIDの作り方 | アメブロカスタマイズ 初心者にもできるアメブロカスタマイズ! http://simpleworks.jp/blog/facebook/7373

2. Facebookページに1で作成したアプリをリアルタイムアップデート用に追加

次に対象のFacebookページにリアルタイムアップデートを取得するアプリを追加する必要があります。

  • 追加するエンドポイントは以前は{page_id}/tabsでしたが、version2.2以上では{page_id}/subscribed_appsです。
  • {page_id}/subscribed_appsにPOSTすると追加されます。
  • 結果を確認する時は{page_id}/subscribed_appsにGETリクエストするとリアルタイムアップデートを取得しているアプリの一覧が以下のように表示されます。(リアルタイムアップデートを利用している他アプリも表示される場合があります)

スクリーンショット 2015-06-10 15.07.06.png

  • 登録するにはpublish_pagesパーミッションを取得した対象のFacebookページのページアクセストークンが必要なので、別途ユーザーがログインしたらページアクセストークンを取得する実装が必要になります。

3. 受信用のコールバックURLを用意

次にFacebookからの更新を受け取るコールバックURLを用意します

  • Facebookからアクセスできる必要があるので、もちろんローカル環境のURLは不可
  • 今回はhttps://test.developer.jp/realtimeupdate/という架空のURLを設定するものとする。

4. リアルタイムアップデートで取得するデータ(Subscribe)を設定

次に実際にリアルタイムアップデートで取得するデータ(Subscribe)の内容を設定します

{アプリID}/subscriptions
  • 上記のエンドポイントへ以下のパラメータを指定してPOSTする
object: page
callback_url: https://test.developer.jp/realtimeupdate/
fields: feed
verify_token: 任意の文字列

5. Subscribeを認証する

  • 4でSubscribeを追加・変更した場合、指定したコールバックにFacebookから以下の認証用の文字列がGETリクエストで届く
hub.mode -> 'subscribe'
hub.challenge -> ランダム文字列
hub.verify_token -> 4の手順時に自分で設定したトークン値
  • 認証のため、以下の処理を行う
  • hub.verify_tokenが自分が設定したトークンと等しいか
  • 等しい場合、hub.challengeの値をそのままレスポンスとして返す
: PHPの場合
if ($_GET['verify_token'] == 設定したトークン) {
  echo $_GET['hub_challenge'];
  return
} 

これでFacebook側に受信サーバーが認証され以降アップデートを受信できる。ちなみにアップデートはPOSTで送信されてくるのでPOSTリクエストを受信できるようにしておく必要はあり。

逆にSubscribeを解除する場合は、{アプリID}/subscriptionsへDELETEリクエストすればOK

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?