Webhooks de Meta

Los webhooks te permiten recibir notificaciones HTTP en tiempo real sobre cambios en objetos específicos en la gráfica social de Meta. Por ejemplo, podríamos enviarte una notificación cuando cualquiera de los usuarios de tu app cambie su dirección de correo electrónico o comente en tu página de Facebook. De esta manera, no tendrás que realizar consultas a la API Graph para obtener información sobre los cambios que se pudieron producir realmente en los objetos o no. Además, podrás evitar alcanzar el límite de frecuencia.

Los pasos que hay que seguir para configurar los webhooks para pagos y los webhooks para Messenger son ligeramente diferentes. Si vas a configurar un webhook en cualquiera de estos productos, consulta las instrucciones de configuración en la respectiva documentación.

Objetos, campos y valores

Hay muchos tipos de objetos en la gráfica social de Meta, como los de usuario o los de páginas, por lo que el primer paso que debes seguir a la hora de configurar un webhook es elegir un tipo de objeto. Dado que los distintos objetos cuentan con campos diferentes, el siguiente paso es suscribirte a los campos específicos de ese tipo de objeto. Te enviaremos un notificación cada vez que se produzca un cambio en el valor de cualquiera de los campos de objeto a los que te hayas suscrito.

Las notificaciones se envían como solicitudes HTTP POST e incluyen una carga JSON con la que se describe el cambio. Por ejemplo, supongamos que configuras un webhook User y te suscribes al campo Photos. Si uno de los usuarios de tu app subiera una foto, te enviaríamos una notificación parecida a esta:

Ejemplo de notificación

{
  "entry": [
    {
      "time": 1520383571,
      "changes": [
        {
          "field": "photos",
          "value": {
            "verb": "update",
            "object_id": "10211885744794461"
          }
        }
      ],
      "id": "10210299214172187",
      "uid": "10210299214172187"
    }
  ],
  "object": "user"
}

Servidor HTTPS

Los webhooks se envían por medio de HTTPS, por lo cual tu servidor debe ser capaz de recibir y procesar solicitudes HTTPS, y debe tener instalado un certificado TLS/SSL válido. No se admiten los certificados autofirmados.

Revisión de apps

Los webhooks no requieren la revisión de apps. Sin embargo, para recibir notificaciones de los webhooks relativas a cambios en los objetos cuando tu app está en modo activo, es necesario que la app cuente con los permisos pertinentes otorgados para acceder a dichos objetos. Consulta los permisos a continuación.

Permisos

En general, para que una app pueda estar disponible públicamente, primero debe pasar por una revisión de apps. Durante la revisión, las apps pueden solicitar la aprobación de permisos específicos, que controlan los tipos de datos a los que una app puede acceder cuando se usa la API Graph.

Aunque el producto Webhooks no requiere la revisión de apps, sí se rige por permisos. Esto significa que, aunque configures un webhook y te suscribas a campos específicos de un tipo de objeto, no recibirás notificaciones de los cambios que se hagan en un objeto de ese tipo, excepto que se den las siguientes condiciones:

  • Tu app debe tener aprobados los permisos que corresponden a ese tipo de datos.
  • El objeto al que le corresponden los datos debe haber otorgado permiso a tu app para acceder a esos datos (p. ej., un usuario permite que la app acceda al feed).

Modo de desarrollo

Las apps en modo de desarrollo solo pueden recibir notificaciones de prueba iniciadas a través del panel de apps o notificaciones iniciadas por personas que tienen un rol en la app.

Ten presente que, para los eventos de webhooks de Messenger, el comportamiento del modo de desarrollo es diferente. Para obtener más información, consulta el documento Webhooks para Messenger.

Configuración

A fin de usar webhooks, debes configurar un extremo en un servidor (HTTPS) seguro y, a continuación, agregar el producto Webhooks al panel de app y configurarlo. El resto de estos documentos explican cómo completar ambos pasos.

¿Todo listo? ¡Empecemos!

Más información