Middle+
iOS tətbiqində Apple vasitəsilə autentifikasiya necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Apple vasitəsilə autentifikasiya (Sign In with Apple) tətbiqində aşağıdakı addımlar tələb olunur:
-
Tətbiqi Apple Developer Portal-da konfiqurasiya edin:
- "Sign In with Apple" imkanını App ID üçün aktivləşdirin.
- İmkan aktivləşdirilmiş Provisioning Profile yaradın və ya yeniləyin.
-
Xcode layihəsinə "Sign In with Apple" imkanını əlavə edin.
-
AuthenticationServicesframework-dən istifadə edin.
Autentifikasiya sorğusunu başlatmaq üçün nümunə kod:
import AuthenticationServices
@available(iOS 13.0, *)
func performSignInWithApple() {
let appleIDProvider = ASAuthorizationAppleIDProvider()
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email]
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
authorizationController.performRequests()
}
// Delegate implementasiyası
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
let userIdentifier = appleIDCredential.user
let fullName = appleIDCredential.fullName
let email = appleIDCredential.email
print("User ID: \(userIdentifier)")
print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
print("Email: \(email ?? "")")
} else if let passwordCredential = authorization.credential as? ASPasswordCredential {
let username = passwordCredential.user
let password = passwordCredential.password
print("Username: \(username)")
print("Password: \(password)")
}
}
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Sign in with Apple failed: \(error.localizedDescription)")
}
}
// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window!
}
}
// Əlavə olaraq, alınan məlumatları emal edin:
// userIdentifier istifadəçini unikal şəkildə tanımaq üçün
// fullName və email ilk girişdə mövcuddur, onları yadda saxlayın
// userIdentifier, identityToken və authorizationCode-u serverinizə göndərin
// server identityToken-u Apple ilə təsdiqləməlidir
Əsas autentifikasiya ilə yanaşı, aşağıdakıları da həyata keçirmək vacibdir:
* istifadəçinin autentifikasiya vəziyyətini yoxlamaq
* istifadəçi tərəfindən autentifikasiyanın ləğvi
* backend ilə inteqrasiya və istifadəçi hesabının yaradılması və ya autentifikasiyası
Qeyd: Sign In with Apple yalnız iOS 13 / macOS Catalina və daha yuxarı versiyalarda mövcuddur. Əgər köhnə versiyalar istifadə olunursa, ehtiyat autentifikasiya mexanizmi tələb olunur.