Webhooks-API v2
Übersicht
Funktionsübersicht
Tarif | Preis | Anzahl der Webhooks |
---|---|---|
Self-Serve Pro | 5.000 $/Monat | 1 |
Enterprise | Vertrieb kontaktieren | 5+ |
Produkte mit Webhook-Unterstützung
Webhooks verwalten
1. Entwickeln Sie eine Webhook-Consumer-App
- Erstellen Sie eine Web-App mit einer öffentlich erreichbaren HTTPS-URL, die als Webhook-endpoint zum Empfangen von Ereignissen dient.
- Der URI‑Pfad ist vollständig Ihnen überlassen. Dieses Beispiel wäre gültig: https://mydomain.com/service/listen
- Wenn Sie Webhooks aus verschiedenen Quellen empfangen, ist ein gängiges Muster: https://mydomain.com/webhook/twitter
- Beachten Sie, dass die angegebene URL keine Portangabe enthalten darf (https://mydomain.com:5000/NoWorkie).
- Ein erster Schritt ist das Schreiben von Code, der eine X Challenge Response Check (CRC)‑GET-Anfrage empfängt und mit einer korrekt formatierten JSON-Antwort reagiert.
- Registrieren Sie Ihre Webhook-URL. Sie senden eine POST-Anfrage an ein /2/webhooks endpoint mit der URL im JSON-Body. Wenn Sie diese Anfrage senden, wird X eine CRC-Anfrage an Ihre Web-App senden.
- Wenn ein Webhook erfolgreich registriert wurde, enthält die Antwort eine Webhook-id. Diese Webhook-id wird später benötigt, wenn Sie Anfragen an Produkte stellen, die Webhooks unterstützen.
- X sendet POST-Anfragen mit Ereignissen an die von Ihnen registrierte URL. Diese Ereignisse werden in JSON codiert. Siehe hier für Beispiel-JSON-Payloads von Webhooks.
Optional: Verwenden Sie xurl für Tests
xurl
-Projekts von GitHub, konfigurieren Sie Ihre Autorisierung und führen Sie dann Folgendes aus:
- Beim Registrieren Ihrer Webhook-URL muss Ihre Web-App das Consumer-Secret Ihrer App für die Verschlüsselung der CRC-Prüfung verwenden.
- Alle eingehenden Direct Messages werden über Webhooks zugestellt. Alle Direct Messages, die über POST /2/dm_conversations/with/:participant_id/messages gesendet werden, werden ebenfalls über Webhooks zugestellt. So kann Ihre Web-App auch von Direct Messages Kenntnis erhalten, die über einen anderen Client gesendet wurden.
- Wenn mehrere Web-Apps dieselbe Webhook-URL verwenden und derselbe Benutzer jeweils jeder App zugeordnet ist, wird dasselbe Ereignis mehrfach an Ihren Webhook gesendet (einmal pro Web-App).
- In einigen Fällen kann Ihr Webhook doppelte Ereignisse erhalten. Ihre Webhook-App sollte damit umgehen können und anhand der Ereignis-id deduplizieren.
-
Beispielcode:
- Account Activity API Setup, eine Node-Web-App, die Webhook-Ereignisse unter Verwendung der Enterprise-Tier der Account Activity API anzeigt.
2. Absicherung von Webhooks
- Die Challenge-Response-Prüfungen ermöglichen X, die Eigentümerschaft der Web-App zu verifizieren, die Webhook-Ereignisse empfängt.
- Der Signatur-Header in jeder POST-Anfrage ermöglicht es Ihnen, zu bestätigen, dass X die Quelle der eingehenden Webhooks ist.
3. Die Webhooks-API
https
-Callback-URL muss im JSON-Body übergeben werden.Beginnen wir mit der Registrierung einer neuen Webhook-URL für den entsprechenden Anwendungskontext. Authentifizierung: OAuth2 App only Bearer Token
- Bearer Token
<BEARER_TOKEN>
z. B.AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
- URL
<URL>
z. B.https://yourdomain.com/webhooks/twitter/
Grund | Beschreibung |
---|---|
CrcValidationFailed | Die Callback-URL hat nicht korrekt auf die CRC-Prüfung geantwortet (z. B. Zeitüberschreitung, falsche Antwort). |
UrlValidationFailed | Die angegebene Callback-URL erfüllt die Anforderungen nicht (z. B. nicht https , ungültiges Format). |
DuplicateUrlFailed | Für die angegebene Callback-URL ist durch Ihre Anwendung bereits ein Webhook registriert. |
WebhookLimitExceeded | Ihre Anwendung hat die maximale Anzahl zulässiger Webhook-Konfigurationen erreicht. |
-
Bearer Token
<BEARER_TOKEN>
z. B.AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
-
URL
<URL>
z. B.https://yourdomain.com/webhooks/twitter/
webhook_id
. Die ID kann aus der Erstellungsmeldung von POST /2/webhooks
oder der Listing-Antwort von GET /2/webhooks
entnommen werden.
Authentifizierung:
OAuth2 App only Bearer Token
- Bearer Token
<BEARER_TOKEN>
z. B.AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
Parameter | Beschreibung |
---|---|
webhook_id | Die ID des zu löschenden Webhooks. |
Grund | Beschreibung |
---|---|
WebhookIdInvalid | Die angegebene webhook_id wurde nicht gefunden oder ist Ihrer App nicht zugeordnet. |
valid
erneut aktiviert.
Authentifizierung:
OAuth2 App only Bearer Token
- Bearer Token
<BEARER_TOKEN>
z. B.AAAAAAAAAAAA0%2EUifi76ZC9Ub0wn...
Parameter | Beschreibung |
---|---|
webhook_id | Die id des zu validierenden Webhooks. |
valid
in der Antwort spiegelt den Status nach dem Prüfversuch wider. Wenn die CRC-Prüfung erfolgreich ist, wird der Status des Webhooks auf „gültig“ aktualisiert. Sie können den aktuellen Status mit GET /2/webhooks
überprüfen.
Grund | Beschreibung |
---|---|
WebhookIdInvalid | Die angegebene webhook_id wurde nicht gefunden oder ist Ihrer App nicht zugeordnet. |
CrcValidationFailed | Die Callback-URL hat nicht korrekt auf die CRC-Prüfanfrage geantwortet. |
4. Die CRC-Prüfung
- Bei der erstmaligen Webhook-Registrierung (
POST /2/webhooks
) - Stündlich durch X zur Validierung
- Manuell über
PUT /2/webhooks/:id
- Verwenden Sie crc_token als Nachricht
- Verwenden Sie das Consumer Secret der App als Schlüssel
- Erstellen Sie einen HMAC-SHA-256-hash
- Kodieren Sie das Ergebnis in Base64
Beispiel-Apps
- Einfacher Webhook-Server
- Ein einzelnes Python-Skript, das zeigt, wie Sie auf die CRC-Prüfung reagieren und POST-Ereignisse akzeptieren.
- Account Activity API Beispiel-Dashboard
- Eine mit bun.sh entwickelte Web-App, mit der Sie Webhooks und Abonnements verwalten und Live-Ereignisse direkt in der App empfangen können.