チュートリアル: Android アプリでのサインアップ後にユーザーを自動的にサインインさせる
このチュートリアルでは、ネイティブ認証を使用した Android アプリでのサインアップ後にユーザーを自動的にサインインさせる方法について説明します。
このチュートリアルでは、次の作業を行う方法について説明します。
- サインアップ後のサインイン。
- エラーを処理します。
前提条件
- サンプルのネイティブ Android モバイル アプリケーションでユーザーをサインインさせるに関する記事の手順を完了します。 この記事では、テナント設定を使用して構成するサンプル Android を実行する方法について説明します。
- チュートリアル: ネイティブ認証を使用して Android モバイル アプリでサインアップを追加する。 このチュートリアルの手順は、サインアップにメール アドレスとパスワードを使用するか、メールのワンタイム パスコードを使用するかに関係なく機能します。
サインアップ後にサインインする
サインアップ フローが正常に完了したら、新しいサインイン フローを開始せずにユーザーを自動的にサインインさせることができます。
SignUpResult.Complete
は SignInContinuationState
オブジェクトを返します。 SignInContinuationState
オブジェクトでは signIn(parameters)
メソッドへのアクセスを提供します。
メール アドレスとパスワードを使用してユーザーをサインアップし、自動的にサインインさせるには、次のコード スニペットを使用できます:
CoroutineScope(Dispatchers.Main).launch {
val parameters = NativeAuthSignUpParameters(username = email)
parameters.password = password
val actionResult: SignUpResult = authClient.signUp(parameters)
if (SignUpActionResult is SignUpResult.CodeRequired) {
val nextState = signUpActionResult.nextState
val submitCodeActionResult = nextState.submitCode(
code = code
)
if (submitCodeActionResult is SignUpResult.Complete) {
// Handle sign up success
val signInContinuationState = actionResult.nextState
val parameters = NativeAuthSignInContinuationParameters()
val signInActionResult = signInContinuationState.signIn(parameters)
if (signInActionResult is SignInResult.Complete) {
// Handle sign in success
val accountState = signInActionResult.resultValue
val getAccessTokenParameters = NativeAuthGetAccessTokenParameters()
val accessTokenResult = accountState.getAccessToken(getAccessTokenParameters)
if (accessTokenResult is GetAccessTokenResult.Complete) {
val accessToken = accessTokenResult.resultValue.accessToken
val idToken = accountState.getIdToken()
}
}
}
}
}
サインイン後に ID トークン要求を取得するには、「ID トークン要求を読み取る」の手順を使用します。
サインイン エラーを処理する
SignInContinuationState.signIn(parameters)
メソッドでは、サインインが成功した後に SignInResult.Complete
を返します。 また、エラーを返すこともあります。
SignInContinuationState.signIn(parameters)
でエラーを処理するには、次のコード スニペットを使用します:
val parameters = NativeAuthSignInContinuationParameters()
val signInActionResult = signInContinuationState.signIn(parameters)
when (signInActionResult) {
is SignInResult.Complete -> {
// Handle sign in success
displayAccount(accountState = actionResult.resultValue)
}
is SignInContinuationError -> {
// Handle unexpected error
}
else -> {
// Handle unexpected error
}
}
private fun displayAccount(accountState: AccountState) {
CoroutineScope(Dispatchers.Main).launch {
val getAccessTokenParameters = NativeAuthGetAccessTokenParameters()
val accessTokenResult = accountState.getAccessToken(getAccessTokenParameters)
if (accessTokenResult is GetAccessTokenResult.Complete) {
val accessToken = accessTokenResult.resultValue.accessToken
val idToken = accountState.getIdToken()
}
}
}