1. Webhook コンシューマーアプリを開発する
X アプリに Webhook を登録するには、X の Webhook イベントを受信し CRC セキュリティリクエストに応答する Web アプリを開発、デプロイ、ホストする必要があります。URL の要件
イベントを受信する Webhook エンドポイントとして機能する公開アクセス可能な HTTPS URL を持つ Web アプリを作成します:- URI パスは自由に決められます。次の例はすべて有効です:
https://mydomain.com/service/listenhttps://mydomain.com/webhook/twitter
- URL にポート指定を含めることはできません (例:
https://mydomain.com:5000/webhookは機能しません)
アプリが処理する必要があること
Webhook エンドポイントは 2 種類の HTTP リクエストを処理する必要があります:2. CRC チェック
Challenge-Response Check (CRC) は、提供されたコールバック URL が有効であり、あなたがそれを制御していることを X が検証する方法です。Web アプリは Webhook の登録と維持のために CRC リクエストに正しく応答する必要があります。CRC がトリガーされるタイミング
Webhook が CRC チェックに失敗すると、
invalid としてマークされ、再度合格するまでイベントの受信が停止します。
CRC の仕組み
X が CRC を送信するとき、crc_token クエリパラメーター付きで Webhook URL に GET リクエストを行います:
response_token を含む JSON ボディで応答する必要があります:
CRC レスポンスの作り方
- クエリパラメーターの
crc_token値をメッセージとして使用 - アプリの consumer secret (API secret key) をキーとして使用
- HMAC SHA-256 ハッシュを作成
- 結果を Base64 エンコード
- エンコードされた文字列の先頭に
sha256=を付ける
例: Python
例
例: Node.js
例
例: Flask (完全なエンドポイント)
この例は、CRC 検証 (GET) とイベント配信 (POST) の両方を処理する完全な Webhook エンドポイントを示しています:例
3. Webhook のセキュリティ
X の Webhook ベース API は、Webhook サーバーのセキュリティを確認するための 2 つの方法を提供します:Challenge-Response Check (CRC)
CRC により、X は Webhook イベントを受信する Web アプリの所有権を確認できます。完全な実装の詳細については、上記のステップ 2 を参照してください。署名検証
X からの各 POST リクエストにはx-twitter-webhooks-signature ヘッダーが含まれ、着信 Webhook の送信元が X であることを確認できます。
署名を検証するには:
- 着信リクエストから
x-twitter-webhooks-signatureヘッダー値を取得 - consumer secret をキー、生のリクエストボディをメッセージとして HMAC SHA-256 ハッシュを作成
- ハッシュを Base64 エンコードし、
sha256=を先頭に付ける - 計算した値をヘッダー値と比較 — 一致するはずです
例
4. Webhook を登録する
アプリが CRC チェックを処理できるようになったら、POST /2/webhooks リクエストで Webhook URL を登録します。このリクエストを行うと、X は所有権を確認するために Web アプリに即座に CRC リクエストを送信します。
すべての Webhook 管理エンドポイントには OAuth2 App Only Bearer Token 認証が必要です。
Webhook を作成する
POST /2/webhooks — API リファレンス
Webhook を表示する
GET /2/webhooks — API リファレンス
アプリケーションに関連付けられたすべての Webhook 設定を取得します。
レスポンス例
Webhook を削除する
DELETE /2/webhooks/:webhook_id — API リファレンス
webhook_id (作成またはリストレスポンスから取得) を使用して Webhook を削除します。
Webhook を検証して再有効化する
PUT /2/webhooks/:webhook_id — API リファレンス
指定された Webhook の CRC チェックをトリガーします。チェックが成功すると、Webhook は valid: true で再有効化されます。
valid フィールドは、チェック試行後のステータスを反映します。現在のステータスは GET /2/webhooks を使用して確認できます。
xurl でのテスト
テスト目的で、xurl ツールは一時的な Webhook をサポートします。GitHub から xurl プロジェクトの最新バージョンをインストールし、認証情報を設定してから次を実行します:
重要な注意事項
サンプルアプリ
次のステップ
Filtered Stream Webhooks
Webhook 経由でフィルタリングされた Post を受信
Account Activity API
Webhook 経由でアカウントイベントを受信