Middle+
Cum se implementează autorizarea prin Apple într-o aplicație iOS?
sobes.tech AI
Răspuns de la AI
Pentru implementarea autentificării prin Apple (Sign In with Apple) pe o aplicație iOS sunt pașii următori:
-
Configurați aplicația în Apple Developer Portal:
- Activați Capabilitatea "Sign In with Apple" pentru App ID-ul dvs.
- Generați sau actualizați Profilul de Provisonare cu Capabilitatea activată.
-
Adăugați Capabilitatea "Sign In with Apple" în proiectul Xcode.
-
Utilizați framework-ul
AuthenticationServices.
Exemplu de cod pentru inițierea unei cereri de autentificare:
import AuthenticationServices
@available(iOS 13.0, *)
func performSignInWithApple() {
// Creăm un provider
let appleIDProvider = ASAuthorizationAppleIDProvider()
// Creăm cereri
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email] // Solicităm numele și email-ul utilizatorului
// Creăm un controller pentru gestionarea cererilor
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
// Setăm delegate-urile pentru gestionarea răspunsurilor
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
// Începem procesul de autentificare
authorizationController.performRequests()
}
// Implementarea delegate-urilor
// ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
// Gestionarea autentificării de succes
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
let userIdentifier = appleIDCredential.user // Identificator unic Apple
let fullName = appleIDCredential.fullName // Numele utilizatorului
let email = appleIDCredential.email // Email-ul utilizatorului (disponibil doar la prima autentificare)
// Aici puteți trimite userIdentifier și alte date către serverul dvs. pentru verificare și creare/koppeling cont
print("User ID: \(userIdentifier)")
print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
print("Email: \(email ?? "")")
} else if let passwordCredential = authorization.credential as? ASPasswordCredential {
// Utilizatorul a folosit parole salvate din iCloud Keychain
let username = passwordCredential.user
let password = passwordCredential.password
// Aici puteți folosi aceste date pentru login
print("Username: \(username)")
print("Password: \(password)")
}
}
// Gestionarea erorii de autentificare
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Sign in with Apple a eșuat: \(error.localizedDescription)")
// Aici tratați erorile (de exemplu, utilizatorul a anulat autentificarea)
}
}
// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
// Oferă fereastra pe care va fi afișat interfața de autentificare
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window! // Este important să returnați window-ul NU nil
}
}
// TODO: Asigurați-vă că YourViewController implementează protocoalele necesare.
- Procesați datele obținute după autentificarea cu succes:
- Utilizați
userIdentifierpentru identificarea unică a utilizatorului Apple. fullNameșiemailsunt disponibile doar la prima autentificare a acestui utilizator și în aplicația dvs. Salvați-le.- Trimiteți
userIdentifier,identityToken(conține informații pentru verificare pe server) șiauthorizationCodepe serverul dvs. pentru verificare și creare/koppeling cont. - Serverul trebuie să verifice
"identityToken"cu Apple pentru a confirma autenticitatea cererii.
- Utilizați
Pe lângă autentificarea principală, este important să implementați și:
- Verificarea stării autentificării utilizatorului (de exemplu, prin
ASAuthorizationAppleIDProvider().getCredentialState). - Posibilitatea de revocare a autentificării de către utilizator.
- Interacțiunea cu backend-ul dvs. pentru crearea / autentificarea utilizatorului după autentificarea cu succes prin Apple.
Notă: Sign In with Apple este disponibil doar pe dispozitivele cu iOS 13 / macOS Catalina și mai noi. Pentru versiunile mai vechi ale sistemului de operare, este necesar un mecanism de autentificare de rezervă.