メインコンテンツへスキップ
Webhook を使用すると、サーバーにデータをリアルタイムで配信できます。更新をポーリングするのではなく、イベントが発生したタイミングでデータを受信できます。

概要

リアルタイム配信

イベントを即時に受信

プッシュ型

データをサーバーへ送信

効率的

ポーリングは不要

信頼性

再試行と復旧をサポート

Webhook の種類

種類説明
Filtered Stream Webhooksフィルタ済みストリームの投稿を webhook 経由で受信します
Account Activity APIアカウントアクティビティのイベントを受信します

Webhook の動作

┌──────────┐      ┌──────────┐      ┌──────────┐
│ X Event  │  →   │ X Server │  →   │ Your     │
│ Occurs   │      │          │      │ Webhook  │
└──────────┘      └──────────┘      └──────────┘
  1. イベント発生 — ユーザーがポストする、DM を送信するなど
  2. X がリクエスト送信 — あなたの webhook URL へ POST リクエストを送信
  3. あなたが処理 — あなたのサーバーでイベントを処理
  4. 200 で応答 — 受信確認として 200 OK を返す

Webhook の要件

要件説明
HTTPSWebhook URL は HTTPS を使用している必要があります
PublicURL はインターネットからパブリックにアクセス可能である必要があります
Fast response10 秒以内にレスポンスを返す必要があります
200 OK受信確認として 200 ステータスを返す必要があります

セキュリティ

チャレンジレスポンスチェック (CRC)

X は CRC リクエストを送信してお使いの webhook を検証します。HMAC-SHA256 ハッシュで応答してください。
import hmac
import hashlib
import base64

def handle_crc(crc_token, consumer_secret):
    sha256_hash = hmac.new(
        consumer_secret.encode(),
        crc_token.encode(),
        hashlib.sha256
    ).digest()
    
    return {
        "response_token": "sha256=" + base64.b64encode(sha256_hash).decode()
    }

シグネチャの検証

x-twitter-webhooks-signature ヘッダーを使用して、Webhook の真正性を検証します。

はじめに

前提条件

フィルタ済みストリーム Webhook

Webhook 経由でフィルタ済みのポストを受信します

Account Activity API

Webhook 経由でアカウントイベントを受信します