Kurz: Přidání registrace do mobilní aplikace pro Android pomocí nativního ověřování
Tento kurz ukazuje, jak zaregistrovat uživatele pomocí jednorázového hesla e-mailu nebo uživatelského jména (e-mailu) a hesla a shromažďovat atributy uživatele v mobilní aplikaci pro Android pomocí nativního ověřování.
V tomto kurzu se naučíte:
- Zaregistrujte uživatele pomocí jednorázového hesla e-mailu nebo uživatelského jména (e-mailu) a hesla.
- Shromážděte atributy uživatele během registrace.
- Zpracování chyb registrace
Požadavky
- Dokončete kroky v kurzu: Příprava aplikace pro Android na článek o nativním ověřování .
- Pokud chcete během registrace shromažďovat atributy uživatele, nakonfigurujte atributy uživatele při vytváření procesu registrace a přihlašování.
Registrace uživatele
Pokud chcete zaregistrovat uživatele pomocí jednorázového hesla nebo uživatelského jména (e-mailu) a hesla, shromáždíte e-mail od uživatele a odešlete mu e-mail obsahující jednorázový přístupový kód e-mailu. Uživatel zadá platný jednorázový přístupový kód e-mailu, který ověří své uživatelské jméno.
Pokud se chcete zaregistrovat uživatele, musíte:
Vytvořte uživatelské rozhraní pro:
- Shromážděte e-mail od uživatele. Přidejte do vstupů ověření, abyste měli jistotu, že uživatel zadá platnou e-mailovou adresu.
- Pokud se zaregistrujete pomocí uživatelského jména (e-mailu) a hesla, shromážděte heslo.
- Shromážděte jednorázový přístupový kód e-mailu od uživatele.
- V případě potřeby shromážděte atributy uživatele.
- Znovu odeslat jednorázové heslo (doporučeno).
- Spusťte tok registrace.
V aplikaci přidejte tlačítko, jehož výběr události aktivuje následující fragment kódu:
CoroutineScope(Dispatchers.Main).launch { val actionResult = authClient.signUp( username = emailAddress //password = password, Pass 'password' param if you sign up with username (email) and password ) if (actionResult is SignUpResult.CodeRequired) { val nextState = actionResult.nextState val submitCodeActionResult = nextState.submitCode( code = code ) if (submitCodeActionResult is SignUpResult.Complete) { // Handle sign up success } } }
- Pomocí metody
signUp(username)
instance sady SDK spusťte tok registrace.- Pokud se chcete zaregistrovat pomocí uživatelského jména (e-mailové adresy) a hesla, předejte funkci parametr
signUp
signUp(username, password)
hesla.
- Pokud se chcete zaregistrovat pomocí uživatelského jména (e-mailové adresy) a hesla, předejte funkci parametr
- Parametr metody je pak e-mailová adresa,
username
kterou od uživatele shromažďujete. - Ve většině běžných scénářů
signUp(username)
vrátí nebosignUp(username, password)
vrátí výsledek, který značí,SignUpResult.CodeRequired
že sada SDK očekává, že aplikace odešle e-mail jednorázovým heslem odeslaný na e-mailovou adresu uživatele. - Objekt
SignUpResult.CodeRequired
obsahuje nový odkaz na stav, který můžeme načíst prostřednictvímactionResult.nextState
. - Nový stav nám dává přístup ke dvěma novým metodám:
submitCode()
odešle jednorázový přístupový kód e-mailu, který aplikace shromažďuje od uživatele.resendCode()
Odešle e-mail jednorázový přístupový kód, pokud uživatel kód neobdrží.
- Vrátí
submitCode()
hodnotuSignUpResult.Complete
, která označuje, že tok je dokončený a uživatel byl zaregistrovaný. - Nebo
signUp(username)
signUp(username, password)
se také může vrátitSignUpError
k označení, že došlo k chybě.
- Pomocí metody
Shromažďování atributů uživatele během registrace
Bez ohledu na to, jestli si zaregistrujete uživatele pomocí jednorázového hesla e-mailu nebo uživatelského jména (e-mailu) a hesla, můžete před vytvořením účtu uživatele shromažďovat atributy uživatele:
Metoda
signUp()
přijímáattributes
parametr, jakosignUp(username, attributes)
:CoroutineScope(Dispatchers.Main).launch { val actionResult = authClient.signUp( username = emailAddress, attributes = userAttributes //password = password, Pass 'password' param if you sign up with username (email) and password ) //... }
Sada Android SDK poskytuje třídu
UserAttribute.Builder
nástrojů, kterou používáte k vytváření atributů uživatele. Pokud například chcete odeslat atributy uživatele města a země , pomocí následujícího fragmentu kódu vytvořte proměnnouuserAttributes
:val userAttributes = UserAttributes.Builder () .country(country) .city(city) .build()
Názvy metod ve
UserAttribute.Builder
třídě jsou stejné jako programovatelné názvy atributů uživatele, které sestavují. Přečtěte si další informace o tvůrci atributů sady Android SDK.Nebo
signUp(username, attributes)
signUp(username, attributes, password)
metoda se může vrátitSignUpResult.AttributesRequired
a indikovat, že aplikace musí odeslat jeden nebo více požadovaných atributů, než Microsoft Entra vytvoří účet. Tyto atributy konfiguruje správce jako povinné v Centru pro správu Microsoft Entra. Microsoft Entra explicitně nepožádá o volitelné atributy uživatele.Výsledek
SignUpResult.AttributesRequired
obsahujerequiredAttributes
parametr.requiredAttributes
je seznamRequiredUserAttribute
objektů, které obsahují podrobnosti o atributech uživatele, které aplikace potřebuje odeslat. Pro zpracováníactionResult is SignUpResult.AttributesRequired
použijte následující fragment kódu:val actionResult = authClient.signUp( username = email, attributes = attributes //password = password, Pass 'password' param if you sign up with username (email) and password ) if (actionResult is SignUpResult.AttributesRequired) { val requiredAttributes = actionResult.requiredAttributes // Handle "attributes required" result val nextState = actionResult.nextState nextState.submitAttributes( attributes = moreAttributes ) }
Zpracování chyb registrace
Během registrace nejsou všechny akce úspěšné. Uživatel se například může pokusit zaregistrovat pomocí již použité e-mailové adresy nebo odeslat neplatný e-mail jednorázovým heslem.
Zpracování chyby při spuštění registrace
K zpracování chyb pro metodu signUp()
použijte následující fragment kódu:
val actionResult = authClient.signUp(
username = email
)
if (actionResult is SignUpResult.CodeRequired) {
// Next step: submit code
} else if (actionResult is SignUpError) {
when {
actionResult.isUserAlreadyExists() -> {
// Handle "user already exists" error
}
else -> {
// Handle other errors
}
}
}
signUp(username, attributes)
nebosignUp(username, password, attributes)
může vrátitSignUpError
.SignUpError
označuje neúspěšný výsledek akce vrácenýsignUp()
a nebude obsahovat odkaz na nový stav.Pokud
actionResult is SignUpError
sada MSAL Android SDK poskytuje pomocné metody, které vám umožní dále analyzovat konkrétní chyby:- Metoda
isUserAlreadyExists()
zkontroluje, jestli uživatelské jméno již bylo použito k vytvoření účtu. isInvalidAttributes()
zkontroluje, jestli jeden nebo více atributů, které aplikace odeslala, selhalo ověření, například nesprávný datový typ. ObsahujeinvalidAttributes
parametr, což je seznam všech atributů, které aplikace odeslaly, ale ověření se nezdařilo.isInvalidPassword()
zkontrolujte, jestli heslo není platné, například pokud heslo nesplňuje všechny požadavky na složitost hesla. Další informace o zásadách hesel Microsoft EntraisInvalidUsername()
zkontrolujte, jestli je uživatelské jméno neplatné, například když je e-mail uživatele neplatný.isBrowserRequired()
zkontroluje potřebu prohlížeče (záložního webu) k dokončení toku ověřování. K tomuto scénáři dochází v případě, že k dokončení toku ověřování nestačí nativní ověřování. Správce například nakonfiguruje jako metodu ověřování e-mail a heslo, ale aplikace neposílá heslo jako typ výzvy nebo ho jednoduše nepodporuje. Při zpracování scénáře, kdy k tomu dojde, použijte postup v aplikaci Pro podporu webového záložního řešení v aplikaci pro Android.isAuthNotSupported()
zkontroluje, jestli aplikace odešle typ výzvy, který Microsoft Entra nepodporuje, jedná se o jinou hodnotu typu výzvy než oob nebo heslo. Přečtěte si další informace o typech úkolů.
Upozorněte uživatele, že se e-mail už používá nebo jsou některé atributy neplatné, pomocí popisné zprávy v uživatelském rozhraní aplikace.
- Metoda
K zpracování chyby neplatných atributů použijte následující fragment kódu:
val actionResult = authClient.signUp( username = email, attributes = attributes //password = password, Pass 'password' param if you sign up with username (email) and password ) if (actionResult is SignUpError && actionResult.isInvalidAttributes()) { val invalidAttributes = actionResult.invalidAttributes // Handle "invalid attributes" error, this time submit valid attributes authClient.signUp( username = emailAddress, attributes = resubmittedAttributes //password = password, Pass 'password' param if you sign up with username (email) and password ) } //...
Zpracování chyby jednorázového hesla pro odeslání e-mailu
K zpracování chyb pro metodu submitCode()
použijte následující fragment kódu:
val submitCodeActionResult = nextState.submitCode(
code = code
)
if (submitCodeActionResult is SignUpResult.Complete) {
// Sign up flow complete, handle success state.
} else if (submitCodeActionResult is SubmitCodeError) {
// Handle errors under SubmitCodeError
when {
submitCodeActionResult.isInvalidCode() -> {
// Handle "code invalid" error
}
else -> {
// Handle other errors
}
}
}
submitCode()
může vrátitSubmitCodeError
.Použijte metodu
isInvalidCode()
ke kontrole konkrétní chyby, jako je například neplatný odeslaný kód. V tomto případě musí být předchozí odkaz na stav použit k opětovnému provedení akce.K načtení nového jednorázového hesla e-mailu použijte následující fragment kódu:
val submitCodeActionResult = nextState.submitCode( code = code ) if (submitCodeActionResult is SubmitCodeError && submitCodeActionResult.isInvalidCode()) { // Inform the user that the submitted code was incorrect or invalid and ask for a new code to be supplied val newCode = retrieveNewCode() nextState.submitCode( code = newCode ) }
Nezapomeňte zahrnout příkazy importu. Android Studio by měl automaticky obsahovat příkazy pro import.
Dokončili jste všechny potřebné kroky k úspěšné registraci uživatele do aplikace. Sestavte a spusťte aplikaci. Pokud je všechno v pořádku, měli byste být schopni uživatele úspěšně zaregistrovat pomocí jednorázového hesla e-mailu nebo e-mailu a hesla.
Volitelné: Přihlášení po toku registrace
Po úspěšném toku registrace se můžete přihlásit uživatele, aniž byste zahájili tok přihlášení. Další informace najdete v kurzu: Přihlášení uživatele po registraci v článku o Androidu .
Další kroky
Kurz: Přidání přihlášení a odhlášení pomocí jednorázového hesla e-mailu v aplikaci pro Android