Versão Graph API

/{app-id}/subscriptions

Essa borda permite que você configure assinaturas de webhooks em um app.

Leitura

Explorador da Graph API
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
}];

Permissões

  • É necessário um token de acesso do app para adicionar assinaturas ao app.

Campos

Nome Descrição Tipo

object

Indica o tipo de objeto ao qual a assinatura se aplica.

enum{user, page, permissions, payments}

callback_url

O URL que receberá a solicitação POST quando uma atualização for acionada.

string

fields

O conjunto de campos neste object relacionados à assinatura.

string[]

active

Indica se a assinatura está ou não ativa.

bool

Criação

É possível criar novas assinaturas de Webhooks por meio desta borda:

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
}];

Enviar uma solicitação POST com os campos callback_url, verify_token e object reativará a assinatura.

Limitações

  • O recurso de Webhooks para o Instagram não é compatível. Os webhooks do Instagram devem ser configurados usando o Painel de Apps.
  • O recurso de Webhooks para o WhatsApp não é compatível. Os webhooks do WhatsApp devem ser configurados usando o Painel de Apps.

Permissões

  • É necessário um token de acesso do app para adicionar novas assinaturas ao app.
  • Assinaturas do tipo de objeto user serão válidas apenas para usuários que instalaram o app.
  • Assinaturas do tipo de objeto page serão válidas apenas para Páginas que instalaram o app. Use a borda /{page-id}/subscribed_apps para instalar o app de uma Página.
  • O app usado na assinatura precisa estar configurado para receber atualizações de Webhooks.

Campos

Nome Descrição Tipo

object

Indica o tipo de objeto ao qual a assinatura se aplica.

enum{user, page, permissions, payments}

callback_url

O URL que receberá a solicitação POST quando uma atualização for acionada e uma solicitação GET ao tentar esta operação de publicação. Consulte nosso guia sobre a criação de uma página de URL para retorno de chamada.

string

fields

Um ou mais dos conjuntos de campos válidos neste object para fazer assinatura.

string[]

include_values

Indica se as notificações de alteração devem incluir os novos valores.

bool

verify_token

Uma string arbitrária usada para confirmar ao servidor que a solicitação é válida.

string

Resposta

Se o URL para retorno de chamada for válido e a assinatura for bem-sucedida:

{
  "success": true
}

Caso contrário, uma mensagem de erro relevante será retornada.

Exclusão

É possível excluir todas as assinaturas ou as assinaturas por objeto usando esta operação:

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
}];

Você pode excluir campos específicos da assinatura ao incluir um parâmetro fields.

Permissões

  • É necessário um token de acesso do app para excluir assinaturas do app.

Campos

Nome Descrição Tipo

object

Um tipo de objeto específico para remover assinaturas por objeto. Se esse campo opcional não for incluído, todas as assinaturas do app serão removidas.

enum{user, page, permissions, payments}

fields

Um ou mais dos conjuntos de campos válidos neste object para fazer assinatura.

string[]

Resposta

Caso a operação seja bem-sucedida:

{
  "success": true
}

Caso contrário, uma mensagem de erro relevante será exibida.

Atualização

É possível fazer atualizações nessa borda ao executar uma operação de publicação com novos valores. Dessa forma, a assinatura do tópico indicado será alterada sem substituir os campos existentes.