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, yerel kimlik doğrulama kullanarak iOS/macOS uygulamanızda bir kullanıcının e-posta ile gönderilen tek kullanımlık geçiş kodunu veya kullanıcı adı (e-posta) ve parolayı kullanarak nasıl kaydedileceği gösterilmektedir. 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.
- Kaydolma hatalarını işleme.
Önkoşullar
- Öğretici: iOS/macOS uygulamanızı yerel kimlik doğrulaması için hazırlama bölümünde yer alan 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şturun:
- 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.
- Kullanıcı bunu almazsa tek seferlik geçiş kodunu yeniden gönderin.
- Kaydolma akışını başlatın.
Uygulamanızda, seçme olayı aşağıdaki kod parçacığını tetikleyen bir düğme ekleyin:
@IBAction func signUpPressed(_: Any) { guard let email = emailTextField.text else { resultTextView.text = "Email or password not set" return } let parameters = MSALNativeAuthSignUpParameters(username: email) nativeAuth.signUp(parameters: parameters, delegate: self) }E-posta tek kullanımlık geçiş kodu kullanarak bir kullanıcıyı kaydetmek için, geçirilen temsilci nesnesindeki yöntemlerden birini çağırarak eşzamansız yanıt veren kitaplığın
signUp(parameters:delegate)yöntemini kullanın; bu nesneSignUpStartDelegateprotokolünü uygulamalıdır. Aşağıdaki kod satırı, kullanıcı kayıt işlemini başlatır:nativeAuth.signUp(parameters: parameters, delegate: self)signUp(parameters:delegate)yönteminde, gönderim formundan kullanıcının e-posta adresini içeren birMSALNativeAuthSignUpParametersörneğini, temsilciyle (SignUpStartDelegateprotokolünü uygulayan bir sınıf) birlikte geçirin.E-posta ve parolakullanarak bir kullanıcıyı kaydetmek için aşağıdaki kod parçacıklarını kullanın:
@IBAction func signUpPressed(_: Any) { guard let email = emailTextField.text, let password = passwordTextField.text else { resultTextView.text = "Email or password not set" return } let parameters = MSALNativeAuthSignUpParameters(username: email) parameters.password = password nativeAuth.signUp(parameters: parameters, delegate: self) }Kitaplığın
signUp(parameters:delegate)yöntemi, kendisine geçirilen veSignUpStartDelegateprotokolünü uygulaması gereken temsilci nesnesi üzerinde yöntemlerden birini çağırarak eşzamansız olarak yanıt verir. Aşağıdaki kod satırı, kullanıcı kayıt işlemini başlatır:nativeAuth.signUp(parameters: parameters, delegate: self)signUp(parameters:delegate)yönteminde, temsilciyle birlikte (SignUpStartDelegateprotokolünü uygulayan bir sınıf) kullanıcının e-posta adresini ve parolasını içeren birMSALNativeAuthSignUpParametersörneği iletin.Protokolü sınıfınızın uzantısı olarak uygulamak
SignUpStartDelegateiçin şunu kullanın:extension ViewController: SignUpStartDelegate { func onSignUpStartError(error: MSAL.SignUpStartError) { resultTextView.text = "Error signing up: \(error.errorDescription ?? "no description")" } func onSignUpCodeRequired( newState: MSAL.SignUpCodeRequiredState, sentTo: String, channelTargetType: MSAL.MSALNativeAuthChannelType, codeLength: Int ) { resultTextView.text = "Verification code sent to \(sentTo)" } }signUp(parameters:delegate)çağrısı,onSignUpCodeRequired()veyaonSignUpStartError()temsilci yöntemlerinden birine yapılan bir çağrıyla sonuçlanır.onSignUpCodeRequired(newState:sentTo:channelTargetType:codeLength), kullanıcının e-posta adresini doğrulamak için bir kod gönderildiğini belirtmek için çağrılır. Kodun nereye gönderildiğine ve kaç basamak içerdiğine ilişkin bazı ayrıntıların yanı sıra, bu temsilci yönteminin türündenewStatebirSignUpCodeRequiredStateparametresi de vardır ve bu da iki yeni yönteme erişmenizi sağlar:submitCode(code:delegate)resendCode(delegate)
Kullanıcının sağladığı kodu göndermek için şunu kullanın:
newState.submitCode(code: userSuppliedCode, delegate: self)Protokolü sınıfınızın uzantısı olarak uygulamak
SignUpVerifyCodeDelegateiçin şunu kullanın:extension ViewController: SignUpVerifyCodeDelegate { func onSignUpVerifyCodeError(error: MSAL.VerifyCodeError, newState: MSAL.SignUpCodeRequiredState?) { resultTextView.text = "Error verifying code: \(error.errorDescription ?? "no description")" } func onSignUpCompleted(newState: SignInAfterSignUpState) { resultTextView.text = "Signed up successfully!" } }submitCode(code:delegate)bir temsilci parametresini kabul eder veSignUpVerifyCodeDelegateprotokolündeki gerekli yöntemleri uygulamanız gerekir. En yaygın senaryoda, kullanıcının kaydolduğunu ve akışın tamamlandığını belirten bir çağrısıonSignUpCompleted(newState)alırsınız.
Kaydolma sırasında kullanıcı özniteliklerini toplama
Bir kullanıcıyı kaydederken, ister tek seferlik e-posta kodu, ister kullanıcı adı (e-posta adresi) ve parola kullanın, kullanıcının hesabı oluşturulmadan önce kullanıcı özniteliklerini toplayabilirsiniz.
signUp(parameters:delegate) yöntemi, öznitelik özelliği olan bir MSALNativeAuthSignUpParameters kullanılarak çağrılabilir.
Kullanıcı özniteliklerini toplamak için aşağıdaki kod parçacığını kullanın:
let attributes = [ "country": "United States", "city": "Redmond" ] let parameters = MSALNativeAuthSignUpParameters(username: email) parameters.password = password parameters.attributes = attributes nativeAuth.signUp(parameters: parameters, delegate: self)signUp(parameters:delegate),onSignUpCodeRequired()veyaonSignUpStartError()temsilci yöntemlerine bir çağrıyla, ya daonSignUpAttributesInvalid(attributeNames: [String])'ün temsilcide uygulanmış olması durumunda,onSignUpAttributesInvalid(attributeNames: [String])'e bir çağrıyla sonuçlanır.Protokolü sınıfınızın uzantısı olarak uygulamak
SignUpStartDelegateiçin aşağıdaki kod parçacığını kullanın:extension ViewController: SignUpStartDelegate { func onSignUpStartError(error: MSAL.SignUpStartError) { resultTextView.text = "Error signing up: \(error.errorDescription ?? "no description")" } func onSignUpCodeRequired( newState: MSAL.SignUpCodeRequiredState, sentTo: String, channelTargetType: MSAL.MSALNativeAuthChannelType, codeLength: Int ) { resultTextView.text = "Verification code sent to \(sentTo)" } func onSignUpAttributesInvalid(attributeNames: [String]) { resultTextView.text = "Invalid attributes \(attributeNames)" } }Öznitelikler geçersizse,
onSignUpAttributesInvalid(attributeNames: [String])yöntemi çağrılır. Bu durumda, kullanıcıya geçersiz özniteliklerin listesini görüntüleyin. Aksi takdirde, kullanıcının e-posta adresini doğrulamak için bir kod gönderildiğini belirtmek içinonSignUpCodeRequired(newState:sentTo:channelTargetType:codeLength)çağrılır. Kodun alıcısı ve kodun basamak sayısı gibi ayrıntılar dışında, bu temsilci yönteminin türündenewStatebirSignUpCodeRequiredStateparametresi vardır ve bu da iki yeni yönteme erişmenizi sağlar:submitCode(code:delegate)resendCode(delegate)
Bir veya daha fazla sayfada kullanıcı öznitelikleri
Öznitelikleri bir veya daha fazla sayfaya yaymak için, farklı sayfalarda toplamak istediğiniz öznitelikleri müşteri kimliği ve erişim yönetimi (CIAM) kiracı yapılandırmasında zorunlu olarak ayarlayın.
MSALNativeAuthSignUpParameters örneğinde signUp(parameters:delegate) öğesini herhangi bir öznitelik iletmeden çağırın. Sonraki adım, kullanıcının e-postasını doğrulamak için aramaktır newState.submitCode(code: userSuppliedCode, delegate: self) .
SignUpVerifyCodeDelegate Protokolü daha önce olduğu gibi sınıfınıza bir uzantı olarak uygulayın, ancak bu kez gerekli yöntemlere ek olarak isteğe bağlı yöntemi onSignUpAttributesRequired(attributes:newState) uygulamanız gerekir:
extension ViewController: SignUpVerifyCodeDelegate {
func onSignUpAttributesRequired(newState: SignUpAttributesRequiredState) {
resultTextView.text = "Attributes required"
}
func onSignUpVerifyCodeError(error: MSAL.VerifyCodeError, newState: MSAL.SignUpCodeRequiredState?) {
resultTextView.text = "Error verifying code: \(error.errorDescription ?? "no description")"
}
func onSignUpCompleted(newState: SignInAfterSignUpState) {
resultTextView.text = "Signed up successfully!"
}
}
Bu temsilci yöntemi, yeni bir yönteme erişmenizi sağlayan türünde newStatebir SignUpAttributesRequiredState parametresine sahiptir:
submitAttributes(attributes:delegate)
Kullanıcının sağladığı öznitelikleri göndermek için aşağıdaki kod parçacığını kullanın:
let attributes = [
"country": "United States",
"city": "Redmond"
]
newState.submitAttributes(attributes: attributes, delegate: self)
Ayrıca protokolü SignUpAttributesRequiredDelegate sınıfınızın uzantısı olarak uygulayın:
extension ViewController: SignUpAttributesRequiredDelegate {
func onSignUpAttributesRequiredError(error: AttributesRequiredError) {
resultTextView.text = "Error submitting attributes: \(error.errorDescription ?? "no description")"
}
func onSignUpAttributesRequired(attributes: [MSALNativeAuthRequiredAttribute], newState: SignUpAttributesRequiredState) {
resultTextView.text = "Attributes required"
}
func onSignUpAttributesInvalid(attributeNames: [String], newState: SignUpAttributesRequiredState) {
resultTextView.text = "Attributes invalid"
}
func onSignUpCompleted(newState: SignInAfterSignUpState) {
resultTextView.text = "Signed up successfully!"
}
}
Kullanıcı tüm gerekli öznitelikleri sağlamadığında veya öznitelikler geçersizse, bu temsilci yöntemleri çağrılır:
-
onSignUpAttributesInvalid: gönderilen bir veya daha fazla özniteliğin giriş doğrulamasında başarısız olduğunu gösterir. Geliştiricinin gönderdiği ve giriş doğrulamasından geçemeyen tüm özniteliklerin listesini içeren attributeNames adlı bir parametre bu hataya dahil edilmiştir. -
onSignUpAttributesRequired: kullanıcı hesabının oluşturulabilmesi için sunucunun bir veya daha fazla özniteliğin gönderilmesini gerektirdiğini gösterir. Kiracı yapılandırmasında bir veya daha fazla öznitelik zorunlu olarak ayarlandığında bu durum ortaya çıkar. Bu sonuç, API'nin gerektirdiği kullanıcı öznitelikleriyle ilgili ayrıntıları özetleyenMSALNativeAuthRequiredAttributenesnelerinin listesi olan attributes parametresini içerir.
Her iki temsilci yöntemi de yeni bir durum referansı içerir.
submitAttributes(attributes:delegate) öğesini yeni özniteliklerle yeniden çağırmak için newState parametresini kullanın.
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.
Kaydolma kullanıcı akışınızda Kullanıcı adı yerleşik kullanıcı özniteliği etkinleştirildiğinde, SDK bunu anahtar olarak flatusername diğer öznitelikler için kullanılan öznitelikler sözlüğü aracılığıyla kabul eder. Kullanıcının ayrı bir öznitelik gerektiren adımdan geçmesine gerek kalmaması için kullanıcı adını (takma ad) doğrudan signUp çağrısında iletebilirsiniz.
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:
guard let email = emailTextField.text, !email.isEmpty,
let password = passwordTextField.text, !password.isEmpty,
let username = usernameTextField.text, !username.isEmpty else {
showResultText("Please fill in all fields")
return
}
let attributes: [String: Any] = [
"flatusername": username
]
let parameters = MSALNativeAuthSignUpParameters(username: email)
parameters.password = password
parameters.attributes = attributes
nativeAuth.signUp(parameters: parameters, delegate: self)
E-posta tek kullanımlık geçiş kodu akışlarında (parola olmadan), parola ayarlamadan öznitelikleri iletin:
let parameters = MSALNativeAuthSignUpParameters(username: email)
parameters.attributes = attributes
nativeAuth.signUp(parameters: parameters, delegate: self)
Kullanıcı adı (takma ad) kaydı sırasında oluşan hataları işlerken, error.isUserAlreadyExists özelliği yinelenen bir takma adı da kapsar ve error.isInvalidAttributes geçersiz bir takma ad değerini gösterir.
Kaydolma hatalarını işleme
Kaydolma sırasında her eylem başarılı olmaz. Örneğin, kullanıcı zaten kullanımda olan bir e-posta adresiyle kaydolmaya çalışabilir veya geçersiz bir kod gönderebilir.
SignUpStartDelegate protokolünün önceki uygulamasında, onSignUpStartError(error) temsilci işlevi işlenirken hata yalnızca görüntüleniyordu.
Belirli bir hata türünü yöneterek kullanıcı deneyimini geliştirmek için aşağıdaki kod parçacığını kullanın:
func onSignUpStartError(error: MSAL.SignUpStartError) {
if error.isUserAlreadyExists {
resultTextView.text = "Unable to sign up: User already exists"
} else if error.isInvalidPassword {
resultTextView.text = "Unable to sign up: The password is invalid"
} else if error.isInvalidUsername {
resultTextView.text = "Unable to sign up: The username is invalid"
} else {
resultTextView.text = "Unexpected error signing up: \(error.errorDescription ?? "no description")"
}
}
İ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. Daha fazla bilgi için Eğitici: iOS/macOS uygulamasında kayıt olunduktan sonra kullanıcıyı otomatik olarak oturum açacak makalesine bakın.