Need to configure your backend?See Build a Backend →
認証イベントのリスン
Amplify Auth は認証フロー中にイベントを発行します。これにより、ユーザーフローをリアルタイムで監視し、カスタムビジネスロジックをトリガーできます。たとえば、データをキャプチャし、アプリの状態を同期し、ユーザーエクスペリエンスをパーソナライズしたい場合があります。サインインやサインアウトなど、Auth ライフサイクル全体のイベントをリスンして対応できます。
AWS Cognito Auth プラグインは、Amplify Hub を通じて重要なイベントを送信します。次のようにこれらのイベントをリスニングできます:
Amplify.Hub.subscribe(HubChannel.AUTH, hubEvent -> { if (hubEvent.getName().equals(InitializationStatus.SUCCEEDED.name())) { Log.i("AuthQuickstart", "Auth successfully initialized"); } else if (hubEvent.getName().equals(InitializationStatus.FAILED.name())){ Log.i("AuthQuickstart", "Auth failed to succeed"); } else { String eventName = hubEvent.getName(); if (eventName.equals(SIGNED_IN.name())) { Log.i("AuthQuickstart", "Auth just became signed in."); } else if (eventName.equals(SIGNED_OUT.name())) { Log.i("AuthQuickstart", "Auth just became signed out."); } else if (eventName.equals(SESSION_EXPIRED.name())) { Log.i("AuthQuickstart", "Auth session just expired."); } else if (eventName.equals(USER_DELETED.name())) { Log.i("AuthQuickstart", "User has been deleted."); } else { Log.w("AuthQuickstart", "Unhandled Auth Event: " + eventName); } } });Amplify.Hub.subscribe(HubChannel.AUTH) { event -> when (event.name) { InitializationStatus.SUCCEEDED.name -> Log.i("AuthQuickstart", "Auth successfully initialized") InitializationStatus.FAILED.name -> Log.i("AuthQuickstart", "Auth failed to succeed") else -> when (event.name) { AuthChannelEventName.SIGNED_IN.name -> Log.i("AuthQuickstart", "Auth just became signed in") AuthChannelEventName.SIGNED_OUT.name -> Log.i("AuthQuickstart", "Auth just became signed out") AuthChannelEventName.SESSION_EXPIRED.name -> Log.i("AuthQuickstart", "Auth session just expired") AuthChannelEventName.USER_DELETED.name -> Log.i("AuthQuickstart", "User has been deleted") else -> Log.w("AuthQuickstart", "Unhandled Auth Event: ${event.name}") } }}Amplify.Hub.subscribe(HubChannel.AUTH).collect { when (it.name) { InitializationStatus.SUCCEEDED.name -> Log.i("AuthQuickstart", "Auth successfully initialized") InitializationStatus.FAILED.name -> Log.i("AuthQuickstart", "Auth failed to succeed") else -> when (it.name) { AuthChannelEventName.SIGNED_IN.name -> Log.i("AuthQuickstart", "Auth just became signed in.") AuthChannelEventName.SIGNED_OUT.name -> Log.i("AuthQuickstart", "Auth just became signed out.") AuthChannelEventName.SESSION_EXPIRED.name -> Log.i("AuthQuickstart", "Auth session just expired.") AuthChannelEventName.USER_DELETED.name -> Log.i("AuthQuickstart", "User has been deleted.") else -> Log.w("AuthQuickstart", "Unhandled Auth Event: ${it.name}") } }}RxAmplify.Hub.on(HubChannel.AUTH) .map(HubEvent::getName) .subscribe(name -> { if (name.equals(InitializationStatus.SUCCEEDED.name())) { Log.i("AuthQuickstart", "Auth successfully initialized"); return; } else if (name.equals(InitializationStatus.FAILED.name())) { Log.i("AuthQuickstart", "Auth failed to succeed"); return; } else { if (name.equals(SIGNED_IN.name())) { Log.i("AuthQuickstart", "Auth just became signed in."); } else if (name.equals(SIGNED_OUT.name())) { Log.i("AuthQuickstart", "Auth just became signed out."); } else if (name.equals(SESSION_EXPIRED.name())) { Log.i("AuthQuickstart", "Auth session just expired."); } else if (name.equals(USER_DELETED.name())) { Log.i("AuthQuickstart", "User has been deleted."); } else { Log.w("AuthQuickstart", "Unhandled Auth Event: " + hubEvent.getName()); } } });