Webhooksを使うと、Metaソーシャルグラフの特定のオブジェクトに加えられた変更のHTTP通知をリアルタイムで受け取ることができます。例えば、アプリのいずれかのユーザーがメールアドレスを変えたとき、またはユーザーがあなたのFacebookページにコメントを付けたときに通知を受け取ることができます。こうすることで、グラフAPIで発生していないかもしれないオブジェクトへの変更をクエリする必要がなくなります。また、レート制限に達することも回避できます。
支払いのWebhooksとMessenger用のWebhooksの構成手順は、若干異なっています。どちらかの製品にWebhookを設定する場合は、それぞれのドキュメントにある設定手順を参照してください。
Metaソーシャルグラフには、ユーザーオブジェクトやページオブジェクトなど、さまざまタイプのオブジェクトがあるため、Webhookを設定する際にはまずオブジェクトタイプを選ぶ必要があります。さらに、オブジェクトごとに使えるフィールドが異なるため、そのオブジェクトタイプの特定のフィールドをサブスクリプション登録します。サブスクリプション登録しているいずれかのオブジェクトフィールドで値の変更があった場合、通知が届きます。
通知はHTTP POSTリクエストとして届き、その中に変更について説明するJSONペイロードが含まれています。例えば、User
Webhookを設定し、Photos
フィールドをサブスクリプション登録したとします。いずれかのアプリユーザーが写真をアップロードすると、次のような通知が届きます。
{ "entry": [ { "time": 1520383571, "changes": [ { "field": "photos", "value": { "verb": "update", "object_id": "10211885744794461" } } ], "id": "10210299214172187", "uid": "10210299214172187" } ], "object": "user" }
WebhooksはHTTPSを使用して送信されるので、ご使用のサーバーはHTTPSリクエストを受信して処理できなければなりません。また、有効なTLS/SSL証明書もインストールされている必要があります。自己署名証明書はサポートされていません。
通常、アプリを公開する前に、アプリレビューを受ける必要があります。レビュー中に、アプリは特定のアクセス許可への承認をリクエストできます。アクセス許可により、グラフAPIの使用時にアプリがアクセスできるデータのタイプが決まります。
Webhooks製品にはアプリレビューは必要ありませんが、アクセス許可は順守されます。つまり、Webhookを設定して、あるオブジェクトタイプの特定のフィールドをサブスクリプション登録したとしても、そのタイプのオブジェクトの変更通知を受け取ることはありません。ただし、以下の場合は例外です。
開発モードのアプリは、アプリダッシュボードを通じて開始されたテスト通知か、アプリ上の役割を持つ人が開始した通知のみを受け取ることができます。
Messenger Webhooksイベントに関しては、開発モードの動作が異なっています。詳しくは、Messenger用のWebhooksドキュメントをご覧ください。
Webhooksを使用するには、安全な(HTTPS)サーバーにエンドポイントを設定し、アプリのダッシュボードでWebhook製品を追加して構成する必要があります。一連のドキュメントの残りの部分では、これら両方の手順を実行する方法について説明します。
準備はよろしいですか?それでは始めましょう。