GET /api/v2/events への長時間接続を確立し、Server-Sent Events (SSE) ストリームとしてイベントを受信します。接続するタイミング、切断後の再開方法、イベントを消費する速度は、すべて制御できます。
このアプローチは、次のような場合に役立ちます。
- Webhook エンドポイントを用意せずに、自分のペースでイベントを処理する必要がある場合。
- バックフィルや復旧のために、特定の時点からイベントを再生する必要がある場合。
- プッシュベースの配信ではなく、ポーリングを前提とするシステムと統合する場合。
Events API の仕組み
id フィールドが含まれます。接続が切断された場合、アプリケーションは再接続し、最後に受信したオフセットを送信します。Auth0 はその時点から配信を再開するため、イベントが失われることはありません。
SSE ストリームには、次のメッセージタイプが含まれます。
SSE ストリームの例
前提条件
-
Events が有効になっている Auth0 テナント。利用可能な Event Stream 接続数は、ご利用のプランによって異なります。
-
read:eventsスコープを持つ Management API アクセストークン。詳細については、Management API アクセストークンを参照してください。
Events API に接続する
curl を使用します。
クエリパラメーター
切断後に再開する
Last-Event-IDheader — 標準の SSE 再接続メカニズムです。ほとんどの SSE クライアントライブラリでは、再接続時にこのヘッダーが自動的に設定されます。fromquery parameter — クライアントがLast-Event-IDヘッダーをサポートしていない場合は、こちらを使用します。
Last-Event-ID ヘッダーが優先されます。
すべてのメッセージ (
offset-only メッセージを含む) について、最新の id 値を永続ストレージに保存してください。アプリケーションが再起動した場合は、保存したオフセットを使用して、中断した箇所から配信を再開します。メッセージタイプの処理
実際のイベント
event フィールドが既知のイベントタイプ (たとえば user.created) に一致するメッセージには、data フィールドにイベント ペイロード全体が含まれます。JSON をパースし、ビジネスロジックに従ってイベントを処理してください。
オフセットのみのメッセージ
offset-only メッセージを送信します。これらのメッセージにはイベントのペイロードは含まれません。受信したら、保存してあるオフセットを更新してください。そうすることで、今後再接続した際に、すでに通過したイベントが再送されるのを防げます。
エラーメッセージ
event: error メッセージは、オフセットの有効期限切れやサーバー側の問題などの致命的な問題を示します。このメッセージを受信すると、ストリームは閉じられます。アプリケーションでは、エラーをログに記録したうえで、適切なオフセットまたは新しい from_timestamp を使用して再接続する必要があります。
ハートビート
: で始まる行は、ハートビートとして使われる SSE のコメントです。これにより、プロキシやロードバランサーを経由しても接続が維持されます。処理は不要です。
サーバー側での接続の切り替え
eventsource npm パッケージを含む) は、Last-Event-ID ヘッダーを使用して自動的に再接続するため、アプリケーションはイベントを失うことなく正しいオフセットから処理を再開できます。
カスタム SSE クライアントを実装する場合は、最新のオフセットを保持し、その値を使って再接続することで、接続の切断を適切に処理できるようにしてください。
コンシューマーを実装する
eventsource npm パッケージは SSE プロトコルを実装しており、Last-Event-ID ヘッダーを使用して自動的に再接続します。別の SSE ライブラリを使用する場合は、自動再接続とオフセットのフォワードに対応していることを確認してください。