教學課程:在 Android 應用程式中註冊後自動登入使用者
本教學課程將說明如何使用原生驗證,在 Android 應用程式中進行註冊,並自動登入使用者。
在本教學課程中,您會了解如何:
- 註冊之後登入。
- 處理錯誤。
必要條件
- 完成在範例原生 Android 行動應用程式中登入使用者的步驟。 本文將說明如何使用租用戶設定,執行您所設定的範例 Android。
- 教學課程:使用原生驗證在 Android 行動應用程式中新增註冊。 透過本教學課程中的步驟,您應能利用電子郵件一次性密碼或電子郵件與密碼進行註冊。
註冊之後登入
註冊流程成功後,您無須起始新的登入流程,即可自動登入使用者。
SignUpResult.Complete
會傳回 SignInContinuationState
物件。 SignInContinuationState
物件會提供對 signIn()
方法的存取權。
若要利用電子郵件與密碼註冊使用者,並自動登入,請使用下列程式碼片段:
CoroutineScope(Dispatchers.Main).launch {
val signUpActionResult = authClient.signUp(
username = emailAddress,
password = password
)
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 signInActionResult = signInContinuationState.signIn()
if (signInActionResult is SignInResult.Complete) {
// Handle sign in success
val accountState = signInActionResult.resultValue
val accessTokenResult = accountState.getAccessToken()
if (accessTokenResult is GetAccessTokenResult.Complete) {
val accessToken = accessTokenResult.resultValue.accessToken
val idToken = accountState.getIdToken()
}
}
}
}
}
若要在登入後擷取識別碼權杖宣告,請使用讀取識別碼權杖宣告中的步驟。
處理登入錯誤
成功登入後,SignInContinuationState.signIn()
方法會傳回 SignInResult.Complete
, 也可以傳回錯誤。
若要利用 SignInContinuationState.signIn()
處理錯誤,請使用下列程式碼片段:
val signInContinuationState = actionResult.nextState
val signInActionResult = signInContinuationState.signIn()
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 accessTokenResult = accountState.getAccessToken()
if (accessTokenResult is GetAccessTokenResult.Complete) {
val accessToken = accessTokenResult.resultValue.accessToken
val idToken = accountState.getIdToken()
}
}
}