Esercitazione: Accedere automaticamente all'utente dopo l'iscrizione a un'app Android
Questa esercitazione illustra come accedere automaticamente all'utente dopo l'iscrizione in un'app Android usando l'autenticazione nativa.
In questa esercitazione apprenderai a:
- Consentire a un utente di accedere dopo l'iscrizione.
- Gestire gli errori.
Prerequisiti
- Completare i passaggi Per accedere agli utenti in un'applicazione per dispositivi mobili Android nativa di esempio. Questo articolo illustra come eseguire un'applicazione Android di esempio configurata con le impostazioni del tenant.
- Esercitazione: Aggiungere l'iscrizione in un'app per dispositivi mobili Android usando l'autenticazione nativa. I passaggi di questa esercitazione funzionano sia per l'iscrizione con e-mail e password sia per l'invio del codice di accesso univoco via e-mail.
Consentire l'accesso dopo l'iscrizione
Dopo un flusso di iscrizione riuscito, è possibile accedere automaticamente agli utenti senza avviare un nuovo flusso di accesso.
Oggetto SignUpResult.Complete
restituito SignInContinuationState
. L'oggetto fornisce l'accesso SignInContinuationState
al signIn()
metodo .
Per registrare un utente con posta elettronica e password, quindi accedervi automaticamente, usare il frammento di codice seguente:
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()
}
}
}
}
}
Per recuperare le attestazioni del token ID dopo l'accesso, seguire la procedura descritta in Attestazioni del token ID di lettura.
Gestire gli errori di accesso
Il SignInContinuationState.signIn()
metodo restituisce SignInResult.Complete
dopo un accesso riuscito. Può anche restituire un errore.
Per gestire gli errori in SignInContinuationState.signIn()
, usare il frammento di codice seguente:
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()
}
}
}