Ce document explique comment configurer un webhook qui vous avertira, chaque fois que les utilisateurs et utilisatrices de votre application publient des modifications sur leurs photos. Une fois que vous aurez compris comment configurer ce Webhook, vous saurez comment configurer tous les Webhooks.
Configurer un Webhook nécessite de :
Ces étapes sont expliquées en détail ci-après.
Votre point de terminaison doit être capable de traiter deux types de demandes HTTPS : Demandes de vérification et Notifications d’évènement. Comme les deux demandes utilisent le protocole HTTPS, votre serveur doit disposer d’un certificat TLS ou SSL valide, correctement configuré et installé. Les certificats auto-signés ne sont pas pris en charge.
Les sections ci-dessous expliquent le contenu de chaque type de demande et comment y répondre. Vous pouvez également utiliser notre exemple d’application déjà configuré pour traiter ces demandes.
À chaque fois que vous configurerez le produit Webhooks dans votre Espace App, nous enverrons une demande GET
à l’URL de votre point de terminaison. Les demandes de vérification comprennent les paramètres de chaîne de requêtes suivants, ajoutés à la fin de votre URL de point de terminaison. Ils ressembleront à ceci :
GET https://www.your-clever-domain-name.com/webhooks? hub.mode=subscribe& hub.challenge=1158201444& hub.verify_token=meatyhamhock
Paramètre | Exemple de valeur | Description |
---|---|---|
|
| Cette valeur sera toujours définie sur |
|
| Vous devez nous transmettre un |
|
| Une chaîne que nous récupérons à partir du champ Vérifier le token dans l’Espace App de votre application. Vous configurez cette chaîne lorsque vous terminez les étapes Paramètres de configuration Webhooks. |
Remarque :PHP convertit les points (.) en tirets bas (_) dans le nom des paramètres.
Chaque fois que votre point de terminaison reçoit une demande de vérification, il doit :
hub.verify_token
correspond à la chaîne que vous avez définie dans le champ Vérifier le token lorsque vous configurez le produit Webhooks dans votre Espace App (vous n’avez pas encore configuré cette chaîne de tokens) ;hub.challenge
.Si vous êtes sur votre espace app et que vous configurez votre produit Webhooks (et, par conséquent, déclenchez une demande de vérification), le tableau de bord indiquera si votre point de terminaison a validé la demande correctement. Si vous utilisez le point de terminaison /app/inscriptions de l’API Graph pour configurer le produit Webhooks, l’API indiquera la réussite ou l’échec avec une réponse.
Lorsque vous configurez votre produit Webhooks, vous vous abonnez à des fields
spécifiques d’un type object
(par exemple, le champ photos
de l’objet user
). À chaque modification de l’un de ces champs, nous enverrons à votre point de terminaison une demande POST
avec une charge utile JSON décrivant la modification.
Par exemple, si vous vous abonnez au champ photos
de l’objet user
et que l’un·e des utilisateurs ou utilisatrices de votre application a publié une photo, nous vous enverrons une demande POST
qui ressemblerait à ceci :
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" }
Les charges utiles contiendront un objet décrivant la modification. Lorsque vous configurez le produit Webhooks, vous pouvez indiquer si les charges utiles doivent uniquement contenir le nom des champs modifiés ou inclure aussi les nouvelles valeurs.
Nous formatons toutes les charges utiles avec JSON, afin que vous puissiez analyser la charge utile en utilisant des méthodes ou des packages d’analyse JSON courants.
Nous ne stockons aucune donnée de notification d’évènement Webhook que nous vous envoyons, alors assurez-vous de saisir et de stocker tout contenu de charge utile que vous souhaitez conserver.
La plupart des charges utiles contiendront les propriétés communes suivantes, mais le contenu et la structure de chaque charge utile varient en fonction des champs d’objet auxquels vous vous êtes inscrit. Reportez-vous au document de référence de chaque objet pour savoir quels champs seront inclus.
Propriété | Description | Type |
---|---|---|
| Le type de l’objet (par exemple, |
|
| Un tableau contenant un objet décrivant les modifications. Les modifications multiples de différents objets du même type peuvent être regroupées. |
|
| L’ID de l’objet |
|
| Un tableau de chaînes indiquant les noms des champs modifiés. Uniquement inclus si vous désactivez le paramètre Inclure les valeurs lors de la configuration du produit Webhooks dans l’Espace App de votre application. |
|
| Un tableau contenant un objet décrivant les champs modifiés et leurs nouvelles valeurs. Uniquement inclus si vous activez le paramètre Inclure les valeurs lors de la configuration du produit Webhooks dans l’Espace App de votre application. |
|
| Un horodatage UNIX indiquant le moment de l’envoi de la notification d’évènement (et non le moment auquel la modification déclenchant la notification s’est produite). |
|
Nous signons toutes les charges utiles de notification d’évènement avec une signature SHA256 et incluons la signature dans l’en-tête X-Hub-Signature
de la demande, précédée de sha1=
. La validation de la charge utile n’est pas obligatoire, elle est cependant conseillée.
Pour valider la charge utile :
X-Hub-Signature-256
(après sha256=
). Si les signatures correspondent, la charge utile est authentique.Votre point de terminaison devrait répondre à toutes les notifications d’évènement avec 200 OK HTTPS
.
Les notifications d’évènement sont agrégées, puis envoyées dans un lot pouvant contenir jusqu’à 1 000 mises à jour. Toutefois, nous ne pouvons pas garantir le traitement par lot. Aussi, veillez à configurer vos serveurs de sorte qu’ils puissent traiter chaque Webhook individuellement.
Si une mise à jour envoyée à votre serveur échoue, nous vous la renverrons immédiatement, puis la renverrons plusieurs autres fois, avec une fréquence d’envoi de plus en plus faible, durant les 36 heures suivantes. Dans de tels cas de figure, votre serveur devrait être capable de gérer la déduplication. Les réponses non reconnues seront supprimées après 36 heures.
Remarque : la fréquence d’envoi des notifications d’évènement avec Messenger est différente. Pour plus d’informations, reportez-vous à la documentation sur les webhooks de la plateforme Messenger.
Lorsque votre point de terminaison ou votre exemple d’application est prêt, utilisez l’Espace App de votre application pour ajouter et configurer le produit Webhooks. Vous pouvez aussi le faire dans le cadre d’un programme en utilisant le point de terminaison /{app-id}/subscriptions
pour tous les Webhooks à l’exception d’Instagram.
Dans cet exemple, nous utiliserons le tableau de bord pour configurer un Webhook qui s’inscrit à toutes les modifications apportées aux photos de toutes les personnes utilisant votre application.
Saisissez l’URL de votre point de terminaison dans le champ URL de rappel et entrez une chaîne dans le champ Vérifier le token. Nous inclurons cette chaîne dans toutes les demandes de vérification. Si vous utilisez l’un de nos exemples d’application, il doit s’agir de la même chaîne que vous avez utilisée pour la variable de configuration TOKEN
de votre application.
Lorsque vous aurez cliqué sur Vérifier et enregistrer, nous enverrons à votre point de terminaison une demande de vérification que vous devrez valider. Si votre point de terminaison valide avec succès la demande, vous devriez voir ceci :
La dernière étape consiste à vous abonner à des champs individuels. Abonnez-vous au champ photos
et envoyez une notification d’évènement de test.
Si votre point de terminaison est configuré correctement, il devrait valider la charge utile et exécuter le code que vous avez défini lors de la validation. Si vous utilisez notre exemple d’application, chargez l’URL de l’application dans votre navigateur web. Il devrait afficher le contenu de la charge utile :
Maintenant que vous savez comment configurer des Webhooks, vous pouvez consulter nos documents complémentaires, qui décrivent les étapes supplémentaires impliquées lors de la configuration de Webhooks pour des produits spécifiques :