Samouczek: automatyczne logowanie użytkownika po zarejestrowaniu się w aplikacji dla systemu Android
W tym samouczku pokazano, jak zalogować użytkownika automatycznie po zarejestrowaniu się w aplikacji systemu Android przy użyciu uwierzytelniania natywnego.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Zaloguj się po utworzeniu konta.
- Obsługa błędów.
Wymagania wstępne
- Wykonaj kroki Logowania użytkowników w przykładowej natywnej aplikacji mobilnej dla systemu Android. W tym artykule pokazano, jak uruchomić przykładowy system Android skonfigurowany przy użyciu ustawień dzierżawy.
- Samouczek: dodawanie rejestracji w aplikacji mobilnej systemu Android przy użyciu uwierzytelniania natywnego. Kroki opisane w tym samouczku powinny działać niezależnie od tego, czy zarejestrujesz się przy użyciu poczty e-mail i hasła, czy jednorazowego kodu dostępu.
Zaloguj się po utworzeniu konta
Po pomyślnym przepływie rejestracji możesz automatycznie logować użytkowników bez inicjowania nowego przepływu logowania.
SignInContinuationState
Zwraca SignUpResult.Complete
obiekt. Obiekt SignInContinuationState
zapewnia dostęp do signIn()
metody.
Aby zarejestrować użytkownika przy użyciu poczty e-mail i hasła, a następnie automatycznie się zalogować, użyj następującego fragmentu kodu:
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()
}
}
}
}
}
Aby pobrać oświadczenia tokenu identyfikatora po zalogowaniu, wykonaj kroki opisane w artykule Oświadczenia tokenu identyfikatora odczytu.
Obsługa błędów logowania
Metoda SignInContinuationState.signIn()
zwraca wartość SignInResult.Complete
po pomyślnym zalogowaniu. Może również zwrócić błąd.
Aby obsłużyć błędy w programie SignInContinuationState.signIn()
, użyj następującego fragmentu kodu:
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()
}
}
}