Smart Lock for Passwords を Android アプリに統合するには、アプリの起動フローとログインフローに Credentials API の呼び出しを追加する必要があります。次の図は、Smart Lock for Passwords を使用する一般的な Android アプリのフローを示しています。
Smart Lock for Passwords を正常に統合する方法は多数あり、統合の具体的な内容はアプリの構造とユーザー エクスペリエンスによって異なりますが、ほとんどのアプリでは次のフローをおすすめします。このフローを使用するアプリには、ユーザー エクスペリエンスに関する次のようなメリットがあります。
- 1 つの認証情報を保存しているサービスの既存のユーザーは、すぐにログインし、アプリを開くとログインビューに直接移動します。
- 複数の認証情報を保存しているユーザーや、自動ログインを無効にしているユーザーは、アプリのログインビューに移動する前に、1 つのダイアログにのみ応答する必要があります。
- 認証情報が保存されていないか、まだ登録していないユーザーは、1 回タップするだけで名前とメールアドレスを選択でき、これらの情報があらかじめ入力されているログインビューまたは登録ビューに、インテリジェントに送信されます。
- ユーザーがログアウトしたときに、アプリが自動的に再ログインしないようにします。
認証情報を取得する
- アプリの起動時に、まだログイン中のユーザーがいない場合は、
CredentialsClient.request()
を呼び出します。 Task
が成功したら、getResult().getCredential()
でユーザーの認証情報を取得し、それを使用してログインします。Task
が失敗し、例外がResolvableApiException
のインスタンスであり、getStatusCode()
がRESOLUTION_REQUIRED
を返す場合、認証情報を選択するためにユーザー入力が必要になります。startResolutionForResult()
を呼び出して、保存済みアカウントを選択するようにユーザーに求めます。次にgetParcelableExtra(Credential.EXTRA_KEY)
を呼び出してユーザーの認証情報を取得し、それを使用してログインします。
認証情報を保存
Task
がApiException
で失敗し、getStatusCode()
がSIGN_IN_REQUIRED
を返した場合、ユーザーは保存されている認証情報がないため、現在のログインまたは登録フローを使用してログインするか、手動で登録する必要があります。ユーザーがログインに成功したら、今後取得できるように認証情報を保存できるようにします(ステップ 5)。ユーザーのメールアドレスなどのログインのヒントを取得することで、ユーザーのログインや登録をより迅速かつ簡単に行えます。ユーザーはヒントを選択して、認証情報の入力をスキップできます。ユーザーにログインを要求するアプリでは、最初の認証情報のリクエストが失敗した後、すぐにヒントを取得することもできます(そうでない場合は、ユーザーがログインまたは登録フローを開始するまで待つことができます)。
CredentialsClient.getHintPickerIntent()
を呼び出してインテントを開始し、ユーザーにアカウントの選択を求めるプロンプトを表示します。次にgetParcelableExtra(Credential.EXTRA_KEY)
を呼び出してログインのヒントを取得します。- ヒントのユーザー ID が既存のユーザーと一致する場合は、ログイン フォームに事前入力し、ユーザーがパスワードを入力してログインできるようにします。
- ヒントのユーザー ID が既存のユーザーと一致しない場合は、登録フォームにユーザーの ID と名前を事前に入力し、新しいアカウントを作成できるようにします。
-
ユーザーがログインまたはアカウントの作成に成功したら、
CredentialsClient.save()
でユーザー ID とパスワードを保存します。ユーザーが Google ログインなどのフェデレーション ID プロバイダを使用してログインした場合は、ユーザーのメールアドレスを ID として
Credential
オブジェクトを作成し、setAccountType
で ID プロバイダを指定します。
ログアウト
- ユーザーがログアウトしたら、
CredentialsClient.disableAutoSignIn()
を呼び出して、ユーザーがすぐに再ログインできないようにします。また、自動ログインを無効にすると、ユーザーはログイン情報を再入力することなく、アカウントを簡単に切り替えることができます(仕事用と個人用のアカウント、共有デバイス上のアカウントなど)。
Smart Lock for Passwords をアプリに統合する準備はできましたか? 参加方法はこちらをご覧ください。