ワンタップサインインがニーズを満たしている場合は、代わりにそれを使用することを検討してください。 One Tapには、更新されたユーザーエクスペリエンスとその他の改善があります。

Android統合フロー

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

Smart Lock for Passwordsを正常に統合する方法は多数あり、統合の詳細はアプリの構造とユーザーエクスペリエンスによって異なりますが、ほとんどのアプリでは次のフローをお勧めします。このフローを使用するアプリには、次のユーザーエクスペリエンスの利点があります。

  • 単一のクレデンシャルが保存されているサービスの既存のユーザーはすぐにサインインし、アプリを開くとサインインビューに直接移動します。
  • 複数のクレデンシャルが保存されているユーザー、または自動サインインを無効にしているユーザーは、アプリのサインインビューに移動する前に、1つのダイアログにのみ応答する必要があります。
  • クレデンシャルを保存していない、またはまだサインアップしていないユーザーは、シングルタップで名前と電子メールを選択し、この情報を事前に入力して、サインインビューまたはサインアップビューにインテリジェントに送信できます。
  • ユーザーがサインアウトすると、アプリはユーザーが自動的に再度サインインしないようにします。

SmartLockサインインフローの図

クレデンシャルを取得する

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

クレデンシャルを保存する

  1. TaskApiException失敗し、 getStatusCode()SIGN_IN_REQUIRED返すSIGN_IN_REQUIRED 、ユーザーには保存された資格情報がないため、現在のサインインまたはサインアップフローを使用して手動でサインインまたはサインアップする必要があります。ユーザーがサインインを正常に完了した後、ユーザーが将来の取得のために資格情報を保存する機会を提供できます(ステップ5)。

    ユーザーの電子メールアドレスなどのサインインのヒントを取得することで、ユーザーがサインインまたはサインアップするのをより速く簡単に行うことができます。ユーザーはヒントを選択して、資格情報の入力をスキップできます。アプリでユーザーがサインインする必要がある場合は、最初のクレデンシャルリクエストが失敗した直後にヒントを取得することを選択できます(そうでない場合は、ユーザーがサインインまたはサインアップフローを開始するまで待つことができます)。

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

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

サインアウト

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

Smart Lock for Passwordsをアプリに統合する準備はできましたか?始めましょう