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 öğretici, yerel kimlik doğrulama kullanarak Android mobil uygulamanızda bir kullanıcının e-posta ile tek kullanımlık geçiş kodu veya kullanıcı adı (e-posta) ve parola kullanarak nasıl kaydedileceğini gösterir. Ayrıca kayıt sırasında kullanıcı özniteliklerini toplamayı ve kullanıcı adı (diğer ad) gibi hataları işlemeyi de öğrenirsiniz.
Bu eğitimde, siz:
- Tek seferlik geçiş kodu veya kullanıcı adı (e-posta) ve parola kullanarak bir kullanıcıya kaydolun.
- Kullanıcı adı (diğer ad) dahil olmak üzere kayıt sırasında kullanıcı özniteliklerini toplayın.
- Kayıt hatalarını ele alma.
Önkoşullar
- Eğitim: Android uygulamanızıyerel kimlik doğrulama için hazırlayın altındaki 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.
- Kaydolma sırasında bir kullanıcı adı (diğer ad) toplamak için kiracınızın kaydolma kullanıcı akışında Kullanıcı adı yerleşik kullanıcı özniteliğini etkinleştirin.
Kullanıcı kaydolma
E-posta 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 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.
- Uygulamanız takma adla oturum açmayı destekliyorsa bir kullanıcı adı (takma ad) isteyin.
- 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 uygulamanın kullanıcının e-posta adresine gönderilen e-posta tek seferlik geçiş kodunu iletmesini beklediğini gösteren bir sonuç,SignUpResult.CodeRequired, döndürür. -
SignUpResult.CodeRequirednesnesi,actionResult.nextStatearacılığıyla alabileceğiniz yeni bir durum referansı içeriyor. - Yeni durum, iki yeni yönteme erişmenizi 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 ) }
Kayıt sırasında kullanıcı adı (takma ad) isteyin
Kullanıcı adı (diğer ad), özel bir kullanıcı özniteliğidir. Şehir veya ülke gibi diğer bilgiler gibi, bu da kayıt sırasında toplanır. Bu özniteliklerin aksine, kullanıcı daha sonra oturum açmak için diğer adı kullanabilir. Diğer ad (örneğin, "johndoe") kullanıcılara e-posta adreslerinden daha kısa ve daha kolay bir oturum açma yolu sağlar.
Kullanıcı adı (diğer ad), kullanıcı adının (e-posta) yerini almaz. Kayıt sırasında uygulamanın her zaman birincil tanımlayıcı olarak kullanıcı adını (e-posta) toplaması gerekir ve diğer adı e-postayla birlikte bir öznitelik olarak toplar. Oturum açma sırasında kullanıcı, kullanıcı adı (e-posta) veya kullanıcı adı (diğer ad) ile oturum açmayı seçebilir.
Kullanıcı adı yerleşik kullanıcı özniteliği, kayıt kullanıcı akışınızda etkinleştirildiğinde SDK, diğer öznitelikler için kullanılan aynı UserAttributes oluşturucu aracılığıyla, flatUsername() yöntemini kullanarak bunu kabul eder. Kullanıcı adını (diğer ad) doğrudan kayıt çağrısına geçirebilirsiniz, böylece kullanıcının ayrı bir öznitelik gerekli adımından geçmesi gerekmez.
Kullanıcı adı (takma ad) almak için, kayıt kullanıcı arayüzünüze e-posta alanının yanına bir kullanıcı adı alanı ekleyin, ardından kayıt olma çağrısında takma adı bir öznitelik olarak iletin:
val email = binding.emailText.text.toString()
val password = binding.passwordText.text.toString()
val username = binding.usernameText.text.toString()
val attributes = UserAttributes.Builder()
.flatUsername(username)
.build()
CoroutineScope(Dispatchers.Main).launch {
val actionResult = authClient.signUpUsingPassword(
username = email,
password = password,
attributes = attributes
)
when (actionResult) {
is SignUpResult.CodeRequired -> {
// Navigate to code verification
navigateToCodeVerification(actionResult.nextState)
}
is SignUpUsingPasswordError -> {
handleSignUpError(actionResult)
}
}
}
E-posta için tek kullanımlık geçiş kodu akışlarında (parola olmadan), signUpUsingPassword yerine signUp kullanın:
val actionResult = authClient.signUp(
username = email,
attributes = attributes
)
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.ise
actionResult is SignUpError, Microsoft Authentication Library (MSAL) Android SDK'sı belirli hataları daha fazla analiz etmek için yardımcı program yöntemleri sağlar:- yöntemi
isUserAlreadyExists(), kullanıcı adı veya diğer adı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. Uygulamanın gönderdiği ancak doğrulamanın başarısız olduğu tüm özniteliklerin listesi olan birinvalidAttributesparametre içerir. -
isInvalidPassword(), parolanın tüm parola karmaşıklık gereksinimlerini karşılamaması gibi durumlarda parolanın geçersiz olup olmadığını denetler. 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ı denetler. -
isBrowserRequired(), kimlik doğrulama akışını tamamlamak için bir tarayıcının (web geri dönüşü) gerekip gerekmediğini denetler. Bu senaryo, yerel kimlik doğrulaması kimlik doğrulama akışını tamamlamak için yeterli olmadığında gerçekleşir. Örneğin, bir yönetici kimlik doğrulama yöntemi olarak e-postayı ve parolayı yapılandırıyor, ancak uygulama parolayı sınama türü olarak gönderemiyor veya desteklemiyor. Bu senaryoyu işlemek için Android uygulamasında Web geri dönüşünü destekleme'deki adımları 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.
Uygulamanızda bir kullanıcıyı kaydetmek için gerekli tüm adımları tamamladınız. Uygulamanızı derleyin ve çalıştırın. Her şey doğru yapılandırıldıysa, tek seferlik geçiş kodu veya e-posta ve parola kullanarak kullanıcıyı kaydedebilmeli ve kullanıcı adı (diğer ad) gibi kullanıcı özniteliklerini toplayabilirsiniz.
İ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ıda oturum açabilirsiniz. Kullanıcı bir kullanıcı adı (diğer ad) ile kaydoldıysa, e-posta adresini veya diğer adını kullanarak oturum açabilir. 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.