Sobes.tech
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:

  1. 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.
  2. Xcode layihəsinə "Sign In with Apple" imkanını əlavə edin.

  3. AuthenticationServices framework-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.