Skip to main content
Events API は、Event Stream に代わるプルベースの手段を提供します。Auth0 がイベントを送信先にプッシュする代わりに、アプリケーションは GET /api/v2/events への長時間接続を確立し、Server-Sent Events (SSE) ストリームとしてイベントを受信します。接続するタイミング、切断後の再開方法、イベントを消費する速度は、すべて制御できます。 このアプローチは、次のような場合に役立ちます。
  • Webhook エンドポイントを用意せずに、自分のペースでイベントを処理する必要がある場合。
  • バックフィルや復旧のために、特定の時点からイベントを再生する必要がある場合。
  • プッシュベースの配信ではなく、ポーリングを前提とするシステムと統合する場合。

Events API の仕組み

アプリケーションが Events API に接続すると、SSE メッセージのストリームを受信します。各メッセージには、オフセット として機能する id フィールドが含まれます。接続が切断された場合、アプリケーションは再接続し、最後に受信したオフセットを送信します。Auth0 はその時点から配信を再開するため、イベントが失われることはありません。 SSE ストリームには、次のメッセージタイプが含まれます。

SSE ストリームの例

前提条件

開始する前に、次のものを用意してください。
  • Events が有効になっている Auth0 テナント。利用可能な Event Stream 接続数は、ご利用のプランによって異なります。
  • read:events スコープを持つ Management API アクセストークン。詳細については、Management API アクセストークンを参照してください。

Events API に接続する

テナントの events エンドポイントへの SSE 接続を確立します。次の例では curl を使用します。

クエリパラメーター

クエリパラメーターを使用して、ストリームを絞り込んだり再開したりできます。

切断後に再開する

SSE 接続は、ネットワークの問題、トークンの有効期限切れ、サーバー側での接続の切り替え (Auth0 は負荷分散のため、通常は数分ごとに定期的に接続を閉じます) など、さまざまな理由で切断されることがあります。標準的な SSE クライアントライブラリは、再接続して最後のオフセットを送信することで、これを透過的に処理します。 再接続時にオフセットを指定する方法は 2 つあります。
  • Last-Event-ID header — 標準の SSE 再接続メカニズムです。ほとんどの SSE クライアントライブラリでは、再接続時にこのヘッダーが自動的に設定されます。
  • from query parameter — クライアントが Last-Event-ID ヘッダーをサポートしていない場合は、こちらを使用します。
両方が指定されている場合は、Last-Event-ID ヘッダーが優先されます。
すべてのメッセージ (offset-only メッセージを含む) について、最新の id 値を永続ストレージに保存してください。アプリケーションが再起動した場合は、保存したオフセットを使用して、中断した箇所から配信を再開します。

メッセージタイプの処理

実際のイベント

event フィールドが既知のイベントタイプ (たとえば user.created) に一致するメッセージには、data フィールドにイベント ペイロード全体が含まれます。JSON をパースし、ビジネスロジックに従ってイベントを処理してください。

オフセットのみのメッセージ

Auth0 は、ストリーム内での位置を進めるため、一定間隔 (ハートビートの頻度) で offset-only メッセージを送信します。これらのメッセージにはイベントのペイロードは含まれません。受信したら、保存してあるオフセットを更新してください。そうすることで、今後再接続した際に、すでに通過したイベントが再送されるのを防げます。

エラーメッセージ

event: error メッセージは、オフセットの有効期限切れやサーバー側の問題などの致命的な問題を示します。このメッセージを受信すると、ストリームは閉じられます。アプリケーションでは、エラーをログに記録したうえで、適切なオフセットまたは新しい from_timestamp を使用して再接続する必要があります。

ハートビート

: で始まる行は、ハートビートとして使われる SSE のコメントです。これにより、プロキシやロードバランサーを経由しても接続が維持されます。処理は不要です。

サーバー側での接続の切り替え

Auth0 は負荷分散のため、SSE 接続を定期的に切断します (通常は数分ごと) 。これは想定された動作であり、エラーではありません。標準的な SSE クライアントライブラリ (eventsource npm パッケージを含む) は、Last-Event-ID ヘッダーを使用して自動的に再接続するため、アプリケーションはイベントを失うことなく正しいオフセットから処理を再開できます。 カスタム SSE クライアントを実装する場合は、最新のオフセットを保持し、その値を使って再接続することで、接続の切断を適切に処理できるようにしてください。

コンシューマーを実装する

次の Node.js の例は、イベントを処理し、オフセットをファイルに保存する最小限の Events API コンシューマーを示しています。
eventsource npm パッケージは SSE プロトコルを実装しており、Last-Event-ID ヘッダーを使用して自動的に再接続します。別の SSE ライブラリを使用する場合は、自動再接続とオフセットのフォワードに対応していることを確認してください。

エラーレスポンス

Events API は、接続の確立時に標準の HTTP ステータスコードを返します。

詳しくはこちら