Android 統合フロー

Smart Lock for Passwords を Android アプリに統合するには、アプリの起動フローとログインフローに Credentials API の呼び出しを追加する必要があります。次の図は、Smart Lock for Passwords を使用する一般的な Android アプリのフローを示しています。

Smart Lock for Passwords を正常に統合する方法は多数あり、統合の具体的な内容はアプリの構造とユーザー エクスペリエンスによって異なりますが、ほとんどのアプリでは次のフローをおすすめします。このフローを使用するアプリには、ユーザー エクスペリエンスに関する次のようなメリットがあります。

  • 1 つの認証情報を保存しているサービスの既存のユーザーは、すぐにログインし、アプリを開くとログインビューに直接移動します。
  • 複数の認証情報を保存しているユーザーや、自動ログインを無効にしているユーザーは、アプリのログインビューに移動する前に、1 つのダイアログにのみ応答する必要があります。
  • 認証情報が保存されていないか、まだ登録していないユーザーは、1 回タップするだけで名前とメールアドレスを選択でき、これらの情報があらかじめ入力されているログインビューまたは登録ビューに、インテリジェントに送信されます。
  • ユーザーがログアウトしたときに、アプリが自動的に再ログインしないようにします。

Smart Lock のログインフローの図

認証情報を取得する

  1. アプリの起動時に、まだログイン中のユーザーがいない場合は、CredentialsClient.request() を呼び出します。
  2. Task が成功したら、getResult().getCredential() でユーザーの認証情報を取得し、それを使用してログインします。
  3. Task が失敗し、例外が ResolvableApiException のインスタンスであり、getStatusCode()RESOLUTION_REQUIRED を返す場合、認証情報を選択するためにユーザー入力が必要になります。startResolutionForResult() を呼び出して、保存済みアカウントを選択するようにユーザーに求めます。次に getParcelableExtra(Credential.EXTRA_KEY) を呼び出してユーザーの認証情報を取得し、それを使用してログインします。

認証情報を保存

  1. TaskApiException で失敗し、getStatusCode()SIGN_IN_REQUIRED を返した場合、ユーザーは保存されている認証情報がないため、現在のログインまたは登録フローを使用してログインするか、手動で登録する必要があります。ユーザーがログインに成功したら、今後取得できるように認証情報を保存できるようにします(ステップ 5)。

    ユーザーのメールアドレスなどのログインのヒントを取得することで、ユーザーのログインや登録をより迅速かつ簡単に行えます。ユーザーはヒントを選択して、認証情報の入力をスキップできます。ユーザーにログインを要求するアプリでは、最初の認証情報のリクエストが失敗した後、すぐにヒントを取得することもできます(そうでない場合は、ユーザーがログインまたは登録フローを開始するまで待つことができます)。

    1. CredentialsClient.getHintPickerIntent() を呼び出してインテントを開始し、ユーザーにアカウントの選択を求めるプロンプトを表示します。次に getParcelableExtra(Credential.EXTRA_KEY) を呼び出してログインのヒントを取得します。
    2. ヒントのユーザー ID が既存のユーザーと一致する場合は、ログイン フォームに事前入力し、ユーザーがパスワードを入力してログインできるようにします。
    3. ヒントのユーザー ID が既存のユーザーと一致しない場合は、登録フォームにユーザーの ID と名前を事前に入力し、新しいアカウントを作成できるようにします。
  2. ユーザーがログインまたはアカウントの作成に成功したら、CredentialsClient.save() でユーザー ID とパスワードを保存します。

    ユーザーが Google ログインなどのフェデレーション ID プロバイダを使用してログインした場合は、ユーザーのメールアドレスを ID として Credential オブジェクトを作成し、setAccountType で ID プロバイダを指定します。

ログアウト

  1. ユーザーがログアウトしたら、CredentialsClient.disableAutoSignIn() を呼び出して、ユーザーがすぐに再ログインできないようにします。また、自動ログインを無効にすると、ユーザーはログイン情報を再入力することなく、アカウントを簡単に切り替えることができます(仕事用と個人用のアカウント、共有デバイス上のアカウントなど)。

Smart Lock for Passwords をアプリに統合する準備はできましたか? 参加方法はこちらをご覧ください