Megosztás a következőn keresztül:


Oktatóanyag: Regisztráció hozzáadása androidos mobilalkalmazásban natív hitelesítéssel

Ez az oktatóanyag bemutatja, hogyan regisztrálhat egy felhasználót e-mailben egyszeri pin-kód vagy felhasználónév (e-mail) és jelszó használatával, és hogyan gyűjthet felhasználói attribútumokat az Android-mobilalkalmazásban natív hitelesítéssel.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Regisztráljon egy felhasználót e-mailben egyszeri pin-kód vagy felhasználónév (e-mail) és jelszó használatával.
  • Felhasználói attribútumok gyűjtése a regisztráció során.
  • Regisztrációs hibák kezelése.

Előfeltételek

Felhasználó regisztrálása

Ha egyszeri pin-kód vagy felhasználónév (e-mail) és jelszó használatával szeretne regisztrálni egy felhasználót, gyűjtsön egy e-mailt a felhasználótól, majd küldjön egy egyszeri jelszót tartalmazó e-mailt a felhasználónak. A felhasználó egy érvényes, egyszeri pin-kóddal rendelkező e-mail-címet ad meg a felhasználónév ellenőrzéséhez.

Felhasználó regisztrációjához a következőkre van szükség:

  1. Felhasználói felület (UI) létrehozása a következőhöz:

    • E-mail gyűjtése a felhasználótól. Adjon hozzá érvényesítést a bemenetekhez, hogy a felhasználó érvényes e-mail-címet adjon meg.
    • Ha felhasználónévvel (e-mailben) és jelszóval regisztrál, gyűjtsön jelszót.
    • Gyűjtsön be egy e-mail egyszeri pin-kódot a felhasználótól.
    • Szükség esetén gyűjtse össze a felhasználói attribútumokat.
    • Egyszeri pin-kód újraküldése (ajánlott).
    • Indítsa el a regisztrációs folyamatot.
  2. Az alkalmazásban adjon hozzá egy gombot, amelynek kiválasztásakor az esemény a következő kódrészletet aktiválja:

    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
            }
        }
    }
    
    • A regisztrációs folyamat elindításához használja az SDK példánymetódusát signUp(username) .
      • Ha felhasználónévvel (e-mail-címmel) és jelszóval szeretne regisztrálni, adja meg a jelszó paraméterét a signUp függvénynek. signUp(username, password)
    • A metódus paramétere usernameezután a felhasználótól gyűjtött e-mail-cím.
    • A leggyakoribb forgatókönyvben a signUp(username)signUp(username, password) rendszer egy eredményt ad vissza, ami azt jelzi, SignUpResult.CodeRequiredhogy az SDK elvárja, hogy az alkalmazás egyszeri pin-kóddal küldje el a felhasználó e-mail-címét.
    • Az SignUpResult.CodeRequired objektum egy új állapothivatkozást tartalmaz, amelyet lekérhetünk.actionResult.nextState
    • Az új állapot két új módszerhez biztosít hozzáférést:
      • submitCode() elküldi az alkalmazás által a felhasználótól gyűjtött egyszeri pin-kódját.
      • resendCode() ha a felhasználó nem kapja meg a kódot, az egyszeri pin-kód ismételt elküldése.
    • A submitCode() visszaadott SignUpResult.Completeérték azt jelzi, hogy a folyamat befejeződött, és a felhasználó regisztrálva lett.
    • Az signUp(username) vagy signUp(username, password) vissza is térhet SignUpError arra, hogy hiba történt.

Felhasználói attribútumok gyűjtése a regisztráció során

Függetlenül attól, hogy egyszeri jelszóval vagy felhasználónévvel (e-mail) és jelszóval regisztrál egy felhasználót, a felhasználói attribútumokat a felhasználói fiók létrehozása előtt gyűjtheti össze:

  • A signUp() metódus a következő módon fogad el egy paramétert attributessignUp(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
            )
            //...
        }
    
  • Az Android SDK egy használati osztályt UserAttribute.Builder biztosít, amellyel felhasználói attribútumokat hozhat létre. Például a város- és országfelhasználói attribútumok beküldéséhez használja a következő kódrészletet a userAttributes változó létrehozásához:

         val userAttributes = UserAttributes.Builder 
        .country(country) 
        .city(city) 
        .build()   
    

    Az osztály metódusnevei UserAttribute.Builder megegyeznek az általuk buildelt felhasználói attribútumok programozható nevével. További információ az Android SDK attribútumkészítőjéről.

  • A signUp(username, attributes) vagy signUp(username, attributes, password)metódus visszatérhet SignUpResult.AttributesRequired , és jelezheti, hogy az alkalmazásnak egy vagy több szükséges attribútumot kell elküldenie, mielőtt a Microsoft Entra létrehoz egy fiókot. Ezeket az attribútumokat a rendszergazda kötelezőként konfigurálja a Microsoft Entra felügyeleti központban. A Microsoft Entra nem kér kifejezetten opcionális felhasználói attribútumokat.

  • Az SignUpResult.AttributesRequired eredmény tartalmaz egy paramétert requiredAttributes . requiredAttributes az alkalmazás által elküldendő felhasználói attribútumokkal kapcsolatos adatokat tartalmazó objektumok listája RequiredUserAttribute . A kezeléshez actionResult is SignUpResult.AttributesRequiredhasználja a következő kódrészletet:

    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
            )
    }
    

Regisztrációs hibák kezelése

A regisztráció során nem minden művelet sikeres. Előfordulhat például, hogy a felhasználó megpróbál regisztrálni egy már használt e-mail-címmel, vagy egy érvénytelen e-mail-címet küld egy egyszeri pin-kóddal.

Regisztrációs hiba kezelése

A metódus hibáinak signUp() kezeléséhez használja a következő kódrészletet:

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) vagy signUp(username, password, attributes) vissza SignUpErroris térhet.

  • SignUpError sikertelen művelet eredményére signUp() utal, és nem tartalmaz hivatkozást az új állapotra.

  • Ha actionResult is SignUpErroraz MSAL Android SDK olyan segédprogramokat biztosít, amelyekkel tovább elemezheti a konkrét hibákat:

    • A metódus isUserAlreadyExists() ellenőrzi, hogy a felhasználónév már használatban van-e egy fiók létrehozásához.
    • isInvalidAttributes() Ellenőrzi, hogy az alkalmazás által elküldött egy vagy több attribútum ellenőrzése sikertelen volt-e, például nem megfelelő adattípus. Tartalmaz egy paramétert invalidAttributes , amely az alkalmazások által elküldött összes attribútum listája, de sikertelen volt az ellenőrzés.
    • isInvalidPassword() ellenőrizze, hogy a jelszó érvénytelen-e, például ha a jelszó nem felel meg az összes jelszó összetettségi követelményeinek. További információ a Microsoft Entra jelszószabályzatairól
    • isInvalidUsername() ellenőrizze, hogy a felhasználónév érvénytelen-e, például ha a felhasználói e-mail érvénytelen.
    • isBrowserRequired() ellenőrzi a böngésző (webes tartalék) szükségességét a hitelesítési folyamat befejezéséhez. Ez a forgatókönyv akkor fordul elő, ha a natív hitelesítés nem elegendő a hitelesítési folyamat befejezéséhez. A rendszergazda például hitelesítési módszerként konfigurálja az e-maileket és a jelszót, de az alkalmazás nem küld jelszót feladattípusként, vagy egyszerűen nem támogatja azt. Az Android-alkalmazás támogatási webes tartalék megoldásának lépéseit követve kezelheti a forgatókönyvet, amikor ez történik.
    • isAuthNotSupported() ellenőrzi, hogy az alkalmazás olyan kihívástípust küld-e, amelyet a Microsoft Entra nem támogat, ez a feladattípus értéke nem oob vagy jelszó. További információ a kihívások típusairól.

    Értesítse a felhasználót arról, hogy az e-mail már használatban van, vagy egyes attribútumok érvénytelenek az alkalmazás felhasználói felületén található rövid üzenettel.

  • Az érvénytelen attribútumok hibájának kezeléséhez használja a következő kódrészletet:

    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
        )
    } 
    //...
    

Az egyszeri pin-kóddal kapcsolatos e-mail-küldési hiba kezelése

A metódus hibáinak submitCode() kezeléséhez használja a következő kódrészletet:

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() vissza tud térni SubmitCodeError.

  • isInvalidCode() A metódus használatával ellenőrizze az adott hibát, például a beküldött kód érvénytelen. Ebben az esetben az előző állapothivatkozást kell használni a művelet újbóli végrehajtásához.

  • Új e-mail egyszeri pin-kód lekéréséhez használja a következő kódrészletet:

    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
        )
    }
    

Győződjön meg arról, hogy tartalmazza az importálási utasításokat. Az Android Studiónak automatikusan tartalmaznia kell az importálási utasításokat.

Elvégezte az összes szükséges lépést, hogy sikeresen regisztráljon egy felhasználót az alkalmazásba. Hozza létre és futtassa az alkalmazást. Ha minden rendben van, képesnek kell lennie arra, hogy sikeresen regisztrálja a felhasználót e-mailben egyszeri pin-kód vagy e-mail és jelszó használatával.

Nem kötelező: Bejelentkezés egy regisztrációs folyamat után

A sikeres regisztrációs folyamat után bejelentkezés nélkül is bejelentkezhet egy felhasználóba. További információ az oktatóanyagban: Bejelentkezés a felhasználóval az Android-cikkben való regisztráció után.

Következő lépések

Oktatóanyag: Bejelentkezés hozzáadása és kijelentkezés egyszeri e-mail-jelszóval az Android-alkalmazásban.