Версия API Graph

/{app-id}/subscriptions

С помощью этой границы контекста вы можете конфигурировать подписки на Webhooks в приложении.

Чтение

Graph API Explorer
GET /v21.0/{app-id}/subscriptions HTTP/1.1
Host: graph.facebook.com
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get(
    '/{app-id}/subscriptions',
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{app-id}/subscriptions",
    null,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{app-id}/subscriptions"
                                      parameters:params
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Разрешения

  • Для получения подписок приложения требуется маркер доступа этого приложения.

Поля

Имя Описание Тип

object

Указывает тип объекта, к которому применяется подписка.

enum{user, page, permissions, payments}

callback_url

URL, который получит запрос POST при активации обновления.

string

fields

Набор полей в этом object, на которые оформлена подписка.

string[]

active

Указывает, активна ли подписка.

bool

Создание

Вы можете создавать новые подписки на Webhooks, используя эту границу контекста:

POST /v21.0/{app-id}/subscriptions HTTP/1.1
Host: graph.facebook.com

object=page&callback_url=http%3A%2F%2Fexample.com%2Fcallback%2F&fields=about%2C+picture&include_values=true&verify_token=thisisaverifystring
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{app-id}/subscriptions',
    array (
      'object' => 'page',
      'callback_url' => 'http://example.com/callback/',
      'fields' => 'about, picture',
      'include_values' => 'true',
      'verify_token' => 'thisisaverifystring',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
Bundle params = new Bundle();
params.putString("object", "page");
params.putString("callback_url", "http://example.com/callback/");
params.putString("fields", "about, picture");
params.putString("include_values", "true");
params.putString("verify_token", "thisisaverifystring");
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{app-id}/subscriptions",
    params,
    HttpMethod.POST,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
NSDictionary *params = @{
  @"object": @"page",
  @"callback_url": @"http://example.com/callback/",
  @"fields": @"about, picture",
  @"include_values": @"true",
  @"verify_token": @"thisisaverifystring",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{app-id}/subscriptions"
                                      parameters:params
                                      HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Запрос POST с полями callback_url, verify_token и object повторно активирует подписку.

Ограничения

  • Webhooks для Instagram не поддерживаются. Webhooks для Instagram необходимо конфигурировать на панели приложений.
  • Webhooks для WhatsApp не поддерживаются. Webhooks для WhatsApp необходимо конфигурировать на панели приложений.

Разрешения

  • Для добавления новых подписок для приложения требуется маркер доступа этого приложения.
  • Подписки для объекта типа user действительны только для пользователей, установивших приложение.
  • Подписки для объекта типа page действительны только для Страниц, на которых установлено приложение. Чтобы установить приложение для Страницы, воспользуйтесь границей контекста /{page-id}/subscribed_apps.
  • Приложение, у которого ранее была подписка, должно быть настроено для получения обновлений Webhooks.

Поля

Имя Описание Тип

object

Указывает тип объекта, к которому применяется подписка.

enum{user, page, permissions, payments}

callback_url

URL, который получит запрос POST при активации обновления и запрос GET при попытке публикации. См. руководство по созданию страницы обратного вызова URL.

string

fields

Один или несколько наборов действительных полей в объекте object, на которые нужно подписаться.

string[]

include_values

Указывает, нужно ли добавить новые значения в уведомление об изменении.

bool

verify_token

Необязательная строка, которую можно использовать, чтобы подтвердить вашему серверу действительность запроса.

string

Ответ

Если обратный вызов URL действителен и подписка выполнена:

{
  "success": true
}

В противном случае возвращается соответствующее сообщение об ошибке.

Удаление

Удалить все подписки или подписки для конкретных объектов можно с помощью следующей операции:

DELETE /v21.0/{app-id}/subscriptions HTTP/1.1
Host: graph.facebook.com

object=page
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->delete(
    '/{app-id}/subscriptions',
    array (
      'object' => 'page',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
Bundle params = new Bundle();
params.putString("object", "page");
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{app-id}/subscriptions",
    params,
    HttpMethod.DELETE,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
NSDictionary *params = @{
  @"object": @"page",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{app-id}/subscriptions"
                                      parameters:params
                                      HTTPMethod:@"DELETE"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Чтобы удалить конкретные поля из своей подписки, укажите параметр fields.

Разрешения

  • Для удаления подписок приложения требуется маркер доступа этого приложения.

Поля

Имя Описание Тип

object

Конкретный объект, для которого нужно удалить подписку. Если это необязательное поле не указано, будут удалены все подписки приложения.

enum{user, page, permissions, payments}

fields

Один или несколько наборов действительных полей в объекте object, на которые нужно подписаться.

string[]

Ответ

В случае успеха:

{
  "success": true
}

В противном случае возвращается соответствующее сообщение об ошибке.

Обновление

Чтобы сделать обновления на этой границе контекста, выполните операцию публикации, указав новые значения. Изменения в подписку будут внесены без переопределения существующих полей.