Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
Dış kiracılar (daha fazla bilgi edinin)
Bu öğreticide, tek seferlik geçiş kodu veya kullanıcı adı (e-posta) ve parola kullanarak bir kullanıcıya kaydolma ve yerel kimlik doğrulaması kullanarak Android mobil uygulamanızda kullanıcı özniteliklerini toplama işlemleri gösterilmektedir.
Bu eğitimde, siz:
- Tek seferlik geçiş kodu veya kullanıcı adı (e-posta) ve parola kullanarak bir kullanıcıya kaydolun.
- Kaydolma sırasında kullanıcı özniteliklerini toplayın.
- Kayıt hatalarını ele alma.
Önkoşullar
- Eğitimi: Android uygulamanızı yerel kimlik doğrulamasına hazırlama makalesindeki adımları tamamlayın.
- Kaydolma sırasında kullanıcı özniteliklerini toplamak istiyorsanız, kaydolma ve oturum açma kullanıcı akışınızıoluştururken kullanıcı özniteliklerini yapılandırın.
Kullanıcı kaydolma
Tek seferlik geçiş kodunu veya kullanıcı adını (e-posta) ve parolayı kullanarak bir kullanıcıya kaydolmak için, kullanıcıdan bir e-posta toplar ve ardından kullanıcıya tek seferlik bir e-posta geçiş kodu içeren bir e-posta gönderirsiniz. Kullanıcı, kullanıcı adını doğrulamak için tek seferlik geçerli bir e-posta geçiş kodu girer.
Bir kullanıcıya kaydolmak için şunları yapmanız gerekir:
Kullanıcı arabirimi (UI) oluşturmak:
- Kullanıcıdan bir e-posta toplayın. Kullanıcının geçerli bir e-posta adresi girdiğinden emin olmak için girişlerinize doğrulama ekleyin.
- Kullanıcı adı (e-posta) ve parola ile kaydolarak bir parola toplayın.
- Kullanıcıdan tek seferlik bir e-posta geçiş kodu toplayın.
- Gerekirse kullanıcı özniteliklerini toplayın.
- Tek seferlik geçiş kodunu yeniden gönderin (önerilir).
- Kaydolma akışını başlatın.
Uygulamanızda, seçme olayı aşağıdaki kod parçacığını tetikleyen bir düğme ekleyin:
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 } } }- Kaydolma akışını başlatmak için SDK'nın örnek yöntemini
signUp(parameters)kullanın. - Kullanıcı adı (e-posta adresi) ve parola kullanarak kaydolmak için
NativeAuthSignUpParameterssınıfının bir örneğini oluşturun ve kullanıcı adınızı ve parolanızı atayın. -
usernamekaydolma parametresi, kullanıcıdan topladığınız e-posta adresidir. - En yaygın senaryoda
signUp(parameters), SDK'nın kullanıcının e-posta adresine gönderilen tek seferlik e-posta şifresini uygulamanın göndermesini beklediğini belirten bir sonucuSignUpResult.CodeRequiredolarak döndürür. -
SignUpResult.CodeRequirednesnesi,actionResult.nextStatearacılığıyla alabildiğimiz yeni bir durum başvurusu içeriyor. - Yeni durum iki yeni yönteme erişmemizi sağlar:
-
submitCode(), uygulamanın kullanıcıdan topladığı e-posta geçiş kodunu tek seferlik gönderir. -
resendCode(), kullanıcı kodu almazsa e-postayla gönderilen tek seferlik geçiş kodunu tekrar gönderir.
-
-
submitCode(), akışın tamamlandığını ve kullanıcının kaydolduğunu gösterenSignUpResult.Completedöndürür. -
signUp(parameters), bir hata oluştuğunu belirtmek içinSignUpError'i de döndürebilir.
- Kaydolma akışını başlatmak için SDK'nın örnek yöntemini
Kaydolma sırasında kullanıcı özniteliklerini toplama
Bir kullanıcıyı tek kullanımlık kod veya e-posta (kullanıcı adı) ve parola kullanarak kayıt yapsanız da, kullanıcının hesabı oluşturulmadan önce kullanıcı özniteliklerini toplayabilirsiniz.
NativeAuthSignUpParametersörneği birattributesparametresi kabul eder: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) //... }Android SDK, kullanıcı öznitelikleri oluşturmak için kullandığınız bir yardımcı program sınıfı
UserAttribute.Buildersağlar. Örneğin, şehir ve ülke kullanıcı özniteliklerini göndermek için,userAttributesdeğişkenini oluşturmak için aşağıdaki kod parçacığını kullanın:val userAttributes = UserAttributes.Builder () .country(country) .city(city) .build()UserAttribute.Buildersınıfındaki yöntem adları, derledikleri kullanıcı özniteliklerinin programlanabilir adlarıyla aynıdır. Android SDK öznitelik oluşturucusu hakkında daha fazla bilgi edinin.signUp(parameters)yöntemi, Microsoft Entra bir hesap oluşturmadan önce uygulamanın bir veya daha fazla gerekli öznitelik göndermesi gerektiğini belirtmek içinSignUpResult.AttributesRequireddöndürebilir. Bu öznitelikler, Yönetici tarafından Microsoft Entra yönetim merkezinde zorunlu olarak yapılandırılır. Microsoft Entra, isteğe bağlı kullanıcı öznitelikleri için açıkça istekte bulunmaz.SignUpResult.AttributesRequiredsonucu birrequiredAttributesparametresi içerir.requiredAttributes, uygulamanın göndermesi gereken kullanıcı öznitelikleriyle ilgili ayrıntıları içerenRequiredUserAttributenesnelerinin listesidir.actionResult is SignUpResult.AttributesRequiredişlemek için aşağıdaki kod parçacığını kullanın: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 ) }
Kaydolma hatalarını işleme
Kaydolma sırasında tüm eylemler başarılı olmaz. Örneğin, kullanıcı zaten kullanılmış bir e-posta adresiyle kaydolmayı veya tek seferlik geçersiz bir e-posta geçiş kodu göndermeyi dener.
Kayıt işlemi başlatma hatasını düzeltme
signUp() yönteminin hatalarını işlemek için aşağıdaki kod parçacığını kullanın:
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)SignUpErrordöndürebilir.SignUpError,signUp()tarafından döndürülen başarısız bir eylem sonucunu gösterir ve yeni duruma başvuru içermez.actionResult is SignUpErrorise, MSAL Android SDK'sı belirli hataları daha fazla analiz etmenizi sağlayan yardımcı program yöntemleri sağlar:- yöntemi
isUserAlreadyExists()kullanıcı adının hesap oluşturmak için zaten kullanılıp kullanılmadığını denetler. -
isInvalidAttributes(), uygulamanın gönderdiği bir veya daha fazla özniteliğin yanlış veri türü gibi doğrulamanın başarısız olup olmadığını denetler. Uygulamaların gönderdiği, ancak doğrulamanın başarısız olduğu tüm özniteliklerin listesi olan birinvalidAttributesparametresi içerir. -
isInvalidPassword(), parolanın tüm parola karmaşıklık gereksinimlerini karşılamaması gibi parolanın geçersiz olup olmadığını denetleyin. Microsoft Entra'nın parola ilkeleri hakkında daha fazla bilgi edinin -
isInvalidUsername()kullanıcı e-postasının geçersiz olması gibi kullanıcı adının geçersiz olup olmadığını denetleyin. -
isBrowserRequired(), kimlik doğrulama akışını tamamlamak için tarayıcı (web geri dönüşü) gereksinimini denetler. Bu senaryo, yerel kimlik doğrulaması kimlik doğrulama akışını tamamlamak için yeterli olmadığında gerçekleşir. Örneğin, yönetici kimlik doğrulama yöntemi olarak e-postayı ve parolayı yapılandırıyor, ancak uygulama parola sınama türü olarak gönderemiyor veya bunu desteklemiyor. Android uygulamasında web geri dönüş desteğini senaryo gerçekleştiğinde işlemek için adımlarını kullanın. -
isAuthNotSupported(), uygulamanın Microsoft Entra'nın desteklemediği bir sınama türü gönderip göndermediğini denetler; bu, oob veya paroladışında bir sınama türü değeridir. sınama türleri hakkında daha fazla bilgi edinin.
Uygulamanın kullanıcı arabiriminde kolay bir ileti kullanarak kullanıcıya e-postanın zaten kullanımda olduğunu veya bazı özniteliklerin geçersiz olduğunu bildirin.
- yöntemi
Geçersiz özniteliklerin hatasını işlemek için aşağıdaki kod parçacığını kullanın:
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) } //...
E-posta gönderme tek seferlik doğrulama kodu hatasını işleme
submitCode() yönteminin hatalarını işlemek için aşağıdaki kod parçacığını kullanın:
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()SubmitCodeErrordöndürebilir.Gönderilen kodun geçersiz olması gibi belirli bir hatayı denetlemek için
isInvalidCode()yöntemini kullanın. Bu durumda, eylemi yeniden gerçekleştirmek için önceki durum başvurusu kullanılmalıdır.Tek seferlik yeni bir e-posta geçiş kodu almak için aşağıdaki kod parçacığını kullanın:
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 ) }
İthalat ifadelerini eklediğinizden emin olun. Android Studio sizin için içeri aktarma deyimlerini otomatik olarak içermelidir.
Bir kullanıcıyı uygulamanıza başarıyla kaydolmak için gerekli tüm adımları tamamladınız. Uygulamanızı derleyin ve çalıştırın. Her şey yolundaysa, tek seferlik geçiş kodu veya e-posta ve parola kullanarak kullanıcıyı başarıyla kaydolabilmeniz gerekir.
İsteğe bağlı: Kayıt akışı sonrasında oturum açma
Başarılı bir kayıt akışı sonrasında, oturum açma akışı başlatmadan bir kullanıcıyla oturum açabilirsiniz. Android'de Kaydolduktan Sonra Kullanıcı Oturumu Açma Eğitimi makalesinde daha fazla bilgi edinin.
Sonraki adımlar
Eğitim: Android uygulamasında tek kullanımlık şifre ile oturum açma ve kapatma ekleme.