Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Externí tenanti (další informace)
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.
- Řešte chyby při registraci
Požadavky
- Dokončete kroky v článku Tutorial: Příprava vaší aplikace pro Android na nativní ověřování.
- Pokud chcete shromažďovat atributy uživatele během registrace, nakonfigurujte atributy uživatele při vytvoření toku uživatele a přihlášení uživatele.
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:
- Získejte 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.
- Získejte jednorázový přístupový kód zaslaný e-mailem od uživatele.
- V případě potřeby shromážděte atributy uživatele.
- Znovu odeslat jednorázové heslo (doporučeno).
- Zahajte proces 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 parameters = NativeAuthSignUpParameters(username = email) // Assign 'password' param if you sign in with username (email) and password // parameters.password = password val actionResult: SignUpResult = authClient.signUp(parameters) 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 instance sady SDK
signUp(parameters)spusťte tok registrace. - Pokud se chcete zaregistrovat pomocí uživatelského jména (e-mailové adresy) a hesla, vytvořte instanci třídy
NativeAuthSignUpParametersa přiřaďte své uživatelské jméno a heslo. - Parametr registrace
usernameje e-mailová adresa, kterou od uživatele shromažďujete. - Ve většině běžných scénářů
signUp(parameters)vrátí výsledek,SignUpResult.CodeRequired, což naznačuje, že sada SDK očekává, že aplikace odešle jednorázový přístupový kód e-mailu, který byl odeslán na e-mailovou adresu uživatele. - Objekt
SignUpResult.CodeRequiredobsahuje 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()znovu odešle jednorázový přístupový kód e-mailem, pokud uživatel kód neobdrží.
-
-
submitCode()vrátíSignUpResult.Complete, což znamená, že tok je dokončený a uživatel se zaregistroval. -
signUp(parameters)může také vrátitSignUpErrora označit, že došlo k chybě.
- Pomocí metody instance sady SDK
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:
Instance
NativeAuthSignUpParameterspřijímá parametrattributes:CoroutineScope(Dispatchers.Main).launch { val parameters = NativeAuthSignUpParameters(username = email) // Assign 'password' param if you sign in with username (email) and password // parameters.password = password parameters.attributes = userAttributes val actionResult: SignUpResult = authClient.signUp(parameters) //... }Sada Android SDK poskytuje třídu nástrojů
UserAttribute.Builder, kterou používáte k vytváření atributů uživatele. Pokud chcete například odeslat atributy uživatele město a zemi, použijte následující fragment kódu k sestavení proměnnéuserAttributes:val userAttributes = UserAttributes.Builder () .country(country) .city(city) .build()Názvy metod ve třídě
UserAttribute.Builderjsou stejné jako programovatelné názvy atributů uživatele, které sestaví. Přečtěte si další informace o konstruktéru atributů Android SDK.Metoda
signUp(parameters)může vrátitSignUpResult.AttributesRequireda 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.AttributesRequiredobsahuje parametrrequiredAttributes.requiredAttributesje seznam objektůRequiredUserAttribute, které obsahují podrobnosti o atributech uživatele, které aplikace potřebuje odeslat. Ke zpracováníactionResult is SignUpResult.AttributesRequiredpoužijte následující fragment kódu:val parameters = NativeAuthSignUpParameters(username = email) // Assign 'password' param if you sign in with username (email) and password // parameters.password = password parameters.attributes = userAttributes val actionResult: SignUpResult = authClient.signUp(parameters) 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.
Řešení chyby při zahájení registrace
K zpracování chyb pro metodu signUp() použijte následující fragment kódu:
val parameters = NativeAuthSignUpParameters(username = email)
// Assign 'password' param if you sign in with username (email) and password
// parameters.password = password
val actionResult: SignUpResult = authClient.signUp(parameters)
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(parameters)může vrátitSignUpError.SignUpErroroznač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, zda 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. ObsahujeinvalidAttributesparametr, 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. Zjistěte více o zásadách hesel Microsoft Entra -
isInvalidUsername()zkontrolujte, jestli je uživatelské jméno neplatné, například když je e-mail uživatele neplatný. -
isBrowserRequired()zkontroluje potřebu prohlížeče (webové varianty) k dokončení průběhu 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 jako metodu ověřování nakonfiguruje e-mail a heslo, ale aplikace neposílá heslo jako typ výzvy nebo ji jednoduše nepodporuje. Při zpracování scénáře, kdy k tomu dojde, použijte kroky v Podpora webového záložního režimu v aplikaci pro Android. -
isAuthNotSupported()zkontroluje, jestli aplikace odesílá typ výzvy, který Microsoft Entra nepodporuje, jestliže se jedná o jinou hodnotu typu výzvy než oob nebo password. Přečtěte si další informace o výzvách typu .
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 parameters = NativeAuthSignUpParameters(username = email) // Assign 'password' param if you sign in with username (email) and password // parameters.password = password parameters.attributes = userAttributes val actionResult: SignUpResult = authClient.signUp(parameters) if (actionResult is SignUpError && actionResult.isInvalidAttributes()) { val invalidAttributes = actionResult.invalidAttributes // Handle "invalid attributes" error, this time submit valid attributes val parameters = NativeAuthSignUpParameters(username = email) // Assign 'password' param if you sign in with username (email) and password // parameters.password = password parameters.attributes = userAttributes authClient.signUp(parameters) } //...
Zpracování chyby při odesílání jednorázového hesla e-mailem
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.Pomocí metody
isInvalidCode()zkontrolujte konkrétní chybu, 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 pro vás měl automaticky zahrnout příkazy pro import.
Dokončili jste všechny potřebné kroky k úspěšné registraci uživatele do aplikace. Sestavte a spusťte vaši 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 procesu 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 pro Android.
Další kroky
Tutoriál : Přidání přihlášení a odhlášení pomocí e-mailového jednorázového hesla v aplikaci pro Android.