В этом документе рассказывается, как настроить Webhooks, который будет уведомлять вас о том, что пользователи приложения опубликовали изменения в своих фото. Поняв, как настроить этот Webhooks, вы сможете настроить любой.
Для настройки Webhooks необходимо:
Более подробно эти действия описаны ниже.
Конечная точка должна обрабатывать два типа HTTPS-запросов: запросы подтверждения и уведомления о событиях. Так как оба типа запросов используют протокол HTTPS, на вашем сервере должен быть настроен и установлен действующий сертификат TLS или SSL. Самозаверенные сертификаты не поддерживаются.
В следующих разделах описаны запросы обоих типов и объясняется, как на них следует отвечать. Вы также можете воспользоваться примером приложения, которое уже настроено для обработки этих запросов.
При настройке продукта Webhooks на панели приложений мы отправляем на URL вашей конечной точки запрос GET
. Запросы подтверждения включают в себя URL вашей конечной точки со следующими параметрами строки запроса. Они будут выглядеть примерно так:
GET https://www.your-clever-domain-name.com/webhooks? hub.mode=subscribe& hub.challenge=1158201444& hub.verify_token=meatyhamhock
Параметр | Пример значения | Описание |
---|---|---|
|
| Этот параметр всегда имеет значение |
|
| Значение типа |
|
| Строка, которую мы берем из поля Маркер подтверждения на панели вашего приложения. Вы зададите ее во время настройки Webhooks. |
Примечание.PHP преобразует точки (.) в названиях параметров в знаки подчеркивания (_).
Когда ваша конечная точка получает запрос подтверждения, она должна:
hub.verify_token
со строкой, которую вы задали в поле Подтвердить маркер на панели приложений при настройке продукта Webhooks (сейчас она не задана);hub.challenge
.Если вы настраиваете продукт Webhooks на панели приложений и инициируете таким образом запрос подтверждения, вы увидите на панели, правильно ли ваша конечная точка подтвердила запрос. Если вы настраиваете продукт Webhooks с помощью конечной точки /app/subscriptions API Graph, этот API отправит ответ об успешном или неудачном подтверждении.
При настройке продукта Webhooks вы подписываетесь на определенные поля (fields
) типа object
(например, на поле photos
объекта user
). При изменении одного из этих полей мы будем отправлять на вашу конечную точку запрос POST
с полезными данными JSON, описывающими изменение.
Например, если вы подписались на поле photos
объекта user
и один из пользователей вашего приложения опубликовал фото, мы отправим вам примерно такой запрос POST
:
POST / HTTPS/1.1 Host: your-clever-domain-name.com/webhooks Content-Type: application/json X-Hub-Signature-256: sha256={super-long-SHA256-signature} Content-Length: 311 { "entry": [ { "time": 1520383571, "changes": [ { "field": "photos", "value": { "verb": "update", "object_id": "10211885744794461" } } ], "id": "10210299214172187", "uid": "10210299214172187" } ], "object": "user" }
Полезные данные содержат объект, описывающий изменение. При настройке продукта Webhooks можно указать, должны ли полезные данные содержать только названия измененных полей или также и их новые значения.
Они всегда имеют формат JSON, поэтому их можно анализировать с помощью стандартных методов и пакетов для анализа JSON.
Мы не храним данные уведомлений о событиях Webhooks, которые отправляем вам, поэтому сохраняйте полезные данные, которые могут вам понадобиться.
Как правило, полезные данные содержат перечисленные далее стандартные свойства, однако содержимое и структура этих данных может зависеть от полей, на которые вы подписались. В справочной документации по каждому объекту можно узнать, какие поля будут входить в такие данные.
Свойство | Описание | Тип |
---|---|---|
| Тип объекта (например, |
|
| Массив, который содержит объект, описывающий изменения. Изменения, внесенные в разные объекты одного типа, могут объединяться. |
|
| ID объекта |
|
| Массив строк с названиями измененных полей. Добавляется, только если вы отключили настройку Добавить значения при настройке продукта Webhooks на панели приложения. |
|
| Массив, который содержит объект, описывающий измененные поля и их новые значения. Добавляется, только если вы включили настройку Добавить значения при настройке продукта Webhooks на панели приложения. |
|
| Метка времени UNIX, указывающая, когда было отправлено уведомление о событии (это не время внесения изменения, которое активировало уведомление). |
|
Мы подписываем полезные данные уведомлений о событии с использованием алгоритма SHA256 и добавляем эту подпись в заголовок X-Hub-Signature-256
запроса, добавляя перед ней sha256=
. Проверять полезные данные не обязательно, но желательно.
Как проверить полезные данные:
X-Hub-Signature-256
(после sha256=
). Если подписи совпадают, полезные данные подлинны.В ответ на все уведомления о событиях ваша конечная точка должна отправлять код 200 OK HTTPS
.
Уведомления о событиях агрегируются и отправляются пакетом (не более 1000 обновлений). При этом пакетная обработка не гарантируется, поэтому настройте на своих серверах обработку каждого Webhooks по отдельности.
В случае сбоя отправки обновления на сервер мы сразу же повторим попытку. Затем, в течение следующих 36 часов, мы будет отправлять обновления повторно, постепенно увеличивая интервалы времени между попытками. В таких случаях ваш сервер должен выполнить дедупликацию. Ответы, не принятые в течение этих 36 часов, будут удалены.
Примечание. Частота, с которой отправляются уведомления о событиях Messenger, будет другой. Дополнительную информацию см. в документации по Webhooks платформы Messenger.
Когда ваша конечная точка или пример приложения будут готовы, добавьте и настройте продукт Webhooks с помощью панели приложений. Это также можно сделать программным путем, используя конечную точку /{app-id}/subscriptions
для всех Webhooks, кроме Instagram.
В этом примере с помощью панели мы настроим Webhooks, который подписан на все изменения, вносимые в фото пользователей приложения.
Введите URL конечной точки в поле URL обратного вызова и строку в поле Подтвердить маркер. Мы будем добавлять эту строку во все запросы подтверждения. Если вы используете один из наших примеров приложений, она должна совпадать со строкой, которую вы использовали в переменной TOKEN
вашего приложения.
После того как вы нажмете кнопку Подтвердить и сохранить, мы отправим на вашу конечную точку запрос, который нужно будет подтвердить. Если ваша конечная точка подтвердит запрос, вы увидите следующее:
Чтобы завершить процедуру, вам нужно подписаться на отдельные поля. Подпишитесь на поле photos
и отправьте тестовое уведомление о событии.
Если конечная точка настроена правильно, она должна подтвердить полезные данные и выполнить заданный код. Если вы используете наш пример приложения, загрузите URL приложения в браузере. Должны отобразиться полезные данные:
Теперь, когда вы знаете, как настроить Webhooks, ознакомьтесь с дополнительными статьями, в которых описана настройка Webhooks для конкретных продуктов.