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 が既存のユーザーと一致する場合は、その ID を事前にログイン フォームに入力し、ユーザーがパスワードを入力してログインできるようにします。
    3. ヒントのユーザー ID が既存のユーザーと一致しない場合は、登録フォームにユーザーの ID と名前を事前に入力し、ユーザーが新しいアカウントを作成できるようにします。
  2. ユーザーがログインに成功するか、アカウントを作成したら、CredentialsClient.save() でユーザー ID とパスワードを保存します。

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

ログアウト

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

Smart Lock for Passwords をアプリに統合しましょう 参加方法はこちらをご覧ください