Middle+
iOS dasturida Apple orqali autentifikatsiyani qanday amalga oshirish mumkin?
sobes.tech AI
AIdan javob
Apple bilan identifikatsiya qilish (Sign In with Apple) ni iOS ilovasida amalga oshirish uchun quyidagi bosqichlar talab etiladi:
-
Apple Developer Portalida ilovani sozlang:
- App ID uchun "Sign In with Apple" imkoniyatini yoqing.
- Ruxsat etilgan yoki yangilangan Provisioning Profile ni yarating yoki yangilang.
-
Xcode loyihasiga "Sign In with Apple" imkoniyatini qo'shing.
-
AuthenticationServicesframework'idan foydalaning.
Autentifikatsiya so'rovini boshlash uchun kod misoli:
import AuthenticationServices
@available(iOS 13.0, *)
func performSignInWithApple() {
// Ta'minlovchini yarating
let appleIDProvider = ASAuthorizationAppleIDProvider()
// So'rovlarni yarating
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email] // Foydalanuvchi nomi va emailini so'rash
// So'rovlarni boshqarish uchun controller yarating
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
// Javoblarni boshqarish delegatlarini o'rnating
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
// Autentifikatsiya jarayonini boshlang
authorizationController.performRequests()
}
// Delegatlarni amalga oshirish
// ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
// Muvaffaqiyatli autentifikatsiya
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
let userIdentifier = appleIDCredential.user // Unikal Apple foydalanuvchi identifikatori
let fullName = appleIDCredential.fullName // Foydalanuvchi ismi
let email = appleIDCredential.email // Foydalanuvchi emaili (faqat birinchi kirishda mavjud)
// Bu yerda userIdentifier va boshqa ma'lumotlarni serveringizga yuboring
print("User ID: \(userIdentifier)")
print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
print("Email: \(email ?? "")")
} else if let passwordCredential = authorization.credential as? ASPasswordCredential {
// Foydalanuvchi iCloud Keychain'dan saqlangan parollarni ishlatdi
let username = passwordCredential.user
let password = passwordCredential.password
// Bu ma'lumotlarni kirish uchun ishlatishingiz mumkin
print("Username: \(username)")
print("Password: \(password)")
}
}
// Xatolikni boshqarish
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Apple bilan kirish muvaffaqiyatsiz: \(error.localizedDescription)")
// Bu yerda xatoliklarni boshqaring
}
}
// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
// Autentifikatsiya interfeysini ko'rsatadigan oynani taqdim etadi
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window! // Noto'g'ri bo'lmagan oynani qaytarish muhim
}
}
// Kerakli protokollarni YourViewController amalga oshirayotganiga ishonch hosil qiling.
- Muvaffaqiyatli autentifikatsiyadan so'ng olingan ma'lumotlarni qayta ishlash:
userIdentifierni Apple foydalanuvchisini yagona tarzda aniqlash uchun foydalaning.fullNamevaemailfaqat birinchi kirishda mavjud bo'ladi. Ularni saqlang.userIdentifier,identityToken(serverda tekshirish uchun ma'lumotlar) vaauthorizationCodeni serveringizga yuboring.- Server
"identityToken"ni Apple bilan tekshirmog'i va so'rovning haqiqiyligini tasdiqlash uchun.
Bundan tashqari, quyidagilarni amalga oshirish muhim:
- Foydalanuvchining autorizatsiya holatini boshqarish (masalan,
ASAuthorizationAppleIDProvider().getCredentialStateyordamida). - Foydalanuvchi tomonidan autorizatsiyani bekor qilish imkoniyati.
- Apple orqali muvaffaqiyatli autentifikatsiyadan so'ng foydalanuvchini yaratish/tekshirish uchun backend bilan hamkorlik.
Eslatma: Sign In with Apple faqat iOS 13 / macOS Catalina va undan yuqori versiyali qurilmalarda mavjud. Eski versiyalar uchun zaxira autentifikatsiya mexanizmi talab etiladi.