Sobes.tech
Middle+

Kuidas rakendada Apple'i kaudu autoriseerimist iOS rakenduses?

sobes.tech AI

Vastus AI-lt

Apple (Sign In with Apple) autoriseerimise rakendamiseks iOS rakenduses on vajalikud järgmised sammud:

  1. Seadistage rakendus Apple Developer Portalis:

    • Lülitage sisse võimalus "Sign In with Apple" teie App ID jaoks.
    • Genereerige või uuendage Provisioning Profile selle võimalusega.
  2. Lisage Xcode projekti võimalus "Sign In with Apple".

  3. Kasutage AuthenticationServices raamistikku.

Näide koodist autoriseerimisnõude alustamiseks:

import AuthenticationServices

@available(iOS 13.0, *)
func performSignInWithApple() {
    // Looge pakkuja
    let appleIDProvider = ASAuthorizationAppleIDProvider()

    // Looge taotlused
    let request = appleIDProvider.createRequest()
    request.requestedScopes = [.fullName, .email] // Nõuame kasutaja nime ja e-posti

    // Looge kontrollija taotluste töötlemiseks
    let authorizationController = ASAuthorizationController(authorizationRequests: [request])

    // Määrake delegaadid
    authorizationController.delegate = self
    authorizationController.presentationContextProvider = self

    // Alustage autoriseerimisprotsessi
    authorizationController.performRequests()
}

// Delegaatide rakendamine
// ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
    // Edukas autoriseerimine
    func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
        if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
            let userIdentifier = appleIDCredential.user // Unikaalne kasutaja ID
            let fullName = appleIDCredential.fullName // Nimi
            let email = appleIDCredential.email // E-post

            // Saate saata need andmed oma serverile
            print("User ID: \(userIdentifier)")
            print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
            print("Email: \(email ?? "")")
        } else if let passwordCredential = authorization.credential as? ASPasswordCredential {
            // Kasutaja kasutas salvestatud paroole iCloud Keychain'ist
            let username = passwordCredential.user
            let password = passwordCredential.password
            // Saate neid andmeid kasutada sisselogimiseks
            print("Username: \(username)")
            print("Password: \(password)")
        }
    }

    // Viga töötlemine
    func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
        print("Sign in with Apple failed: \(error.localizedDescription)")
        // Siin töötleme vigu
    }
}

// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
    // Pakub akent, kus kuvatakse autoriseerimise kasutajaliides
    func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
        return view.window! // Oluline on tagastada mitte-nil window
    }
}

// Märkus: YourViewController peab rakendama vajalikke protokolle.
  1. Töötle andmed, mis saadakse pärast edukat autoriseerimist:
    • Kasutage userIdentifier Apple kasutaja unikaalseks identifitseerimiseks.
    • fullName ja email on saadaval ainult esimesel sisselogimisel ning neid tuleks salvestada.
    • Saada userIdentifier, identityToken (teave serveri verifitseerimiseks) ja authorizationCode oma serverile verifitseerimiseks ja kasutajakonto loomise/side jaoks.
    • Server peab verifitseerima identityToken Apple'iga, et veenduda päringu ehtsuses.

Lisaks põhivõimalusele on oluline rakendada:

  • Kasutaja autoriseerimise oleku haldamine (näiteks ASAuthorizationAppleIDProvider().getCredentialState kaudu).
  • Kasutaja autoriseerimise tühistamise võimalus.
  • Koostöö teie backend'iga kasutaja loomise/autoriseerimise jaoks pärast edukat Apple'i autoriseerimist.

Märkus: Sign In with Apple on saadaval ainult iOS 13 / macOS Catalina ja uuematel seadmetel. Vanemate OS-i versioonide jaoks on vaja varuautentimise mehhanismi.