Conectați-vă cu Apple — cum să o implementați în aplicația dvs

Publicat: 2020-03-06

Nota editorului: acest articol a fost publicat inițial pe Miquido.com pe 14 ianuarie 2020


Conectați-vă cu Apple — o nouă funcție prezentată de Apple la WWDC anul trecut, este acum disponibilă de la iOS 13. Această funcție oferă înregistrarea contului și autentificarea simplă și sigură în aplicație sau site. În loc să completați formulare de înregistrare sau să vă conectați prin intermediul rețelelor sociale, vă puteți acum crea un cont și vă puteți conecta cu ID-ul Apple și verifica prin Face ID, Touch ID sau codul de acces.

👨‍💻 O scurtă descriere a Conectare cu Apple:

  • Configurare rapidă și ușoară a contului și conectare
  • Adrese de e-mail verificate
  • Securitate încorporată
  • Antifrauda
  • Multiplatformă 📱💻 ⌚️
  • iOS 13+

În acest articol, mă voi concentra pe implementarea de bază a Sign In With Apple pe dispozitivele iOS fără integrare cu versiunea web sau integrare cu back-end.

Să începem cu o privire la cum funcționează

După ce atingeți „Conectați-vă cu Apple” sau „Continuați cu Apple” (depinde de ce buton a fost ales pentru a fi implementat în aplicație) apare o fereastră de informații cu posibilitățile acestei soluții (a doua captură de ecran). Apoi, după ce atingem „Continuare”, obținem informații despre ce date vor fi partajate cu proprietarul aplicației.

Aici avem două opțiuni pentru înregistrarea unui cont în aplicație folosind Conectare cu Apple:

  • Cu partajarea adresei noastre de e-mail - adresa dvs. de e-mail reală va fi partajată aplicației sau site-ului web.
  • Cu ascunderea adresei noastre de e-mail - e-mailul dvs. real nu va fi partajat aplicației sau site-ului web. Apple va genera un e-mail unic pentru tine cu domeniul @privaterelay.appleid.com. Nu vă faceți griji, toate e-mailurile de la proprietarul aplicației vor fi oricum redirecționate către căsuța dvs. de e-mail, deoarece e-mailurile vor fi redirecționate către adresa noastră de e-mail reală. Proprietarul aplicației va ști doar adresa de e-mail generată cu domeniul Apple.

După selectarea uneia dintre opțiuni și atingerea „Continuare”, ne verificăm ID-ul Apple ca și în cazul deblocării telefonului, adică prin Face ID, Touch ID sau prin introducerea parolei. În acest moment, trebuie creat un cont în aplicație/site-ul web cu un identificator unic pentru utilizator.

Când ați folosit înainte în aplicație „Conectați-vă cu Apple”, atunci puteți previzualiza detaliile acestui mod de autentificare și nu mai utilizați această funcție. Pentru a face acest lucru, accesați Setări > ID Apple > Parolă și securitate > Aplicații folosind ID-ul dvs. Apple > Alegeți aplicația .

După ce citim partea teoretică a „Conectați-vă cu Apple”, putem trece la implementare 👨 ‍ 💻

În primul rând, trebuie să deschideți „Semnare și capabilități” în proiectul dvs., apoi apăsați + și adăugați capacitatea „Conectați-vă cu Apple”.

Apple la keynote-ul WWDC împarte procesul de implementare a acestei funcții în patru etape. Toate etapele sunt descrise mai jos.

  1. Buton 📱

La început trebuie să adăugăm un buton pe ecran. Acesta trebuie să fie butonul ASAuthorizationAppleIDButton din cadrul AuthenticationService . Este disponibil în două culori (alb și negru) cu titluri diferite. La buton trebuie să adăugăm o acțiune care urmează să fie invocată după ce îl atingem. Descriu acțiunea de autorizare în al doilea punct.

 import AuthenticationServices

buton let = ASAuthorizationAppleIDButton (tip: .signIn, stil: .alb)

button.addTarget(self, action: #selector(appleIdButtonClicked), pentru: .touchUpInside)

stackView.addArrangedSubview(button)
  1. Autorizare ⚙️

Aici creăm o solicitare de autorizare, în care, așa cum este solicitatScopes , oferim doar informațiile necesare pentru a crea un cont în aplicația sau site-ul nostru web. În cazul meu, acesta este numele complet și adresa de e-mail. Apoi setați delegatul și faceți cererea.

 @objc func appleIdButtonClicked() {

let request = ASAuthorizationAppleIDProvider().createRequest()

request.requestedScopes = [.fullName, .email]

let controller = ASAuthorizationController(authorizationRequests: [cerere])

controller.delegate = sine

controller.presentationContextProvider = sine

controller.performRequests()

}
  1. Verificare

După o verificare rapidă prin Face ID, Touch ID sau codul de acces, rezultatul autorizației va fi returnat. Când autorizarea are succes, metoda didCompleteWithAuthorization va returna un obiect de tip AppleIdCredential . Apoi trebuie să verificați dacă acestea sunt acreditări de tip ASAuthorizationAppleIdCredential — dacă da, în acest obiect vom găsi toate datele necesare pentru a configura un cont în sistemele noastre, cum ar fi ID-ul unic de utilizator, numele complet și adresa de e-mail (care utilizatorul solicitase mai devreme). În acest moment, putem trece la crearea unui cont în sistemul nostru furnizând doar informațiile necesare. Dacă apare o eroare, aceasta va fi returnată în metoda didCompleteWithError , unde putem gestiona această eroare.

func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization autorizare: ASAuthorization) {

 if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {

// Creați un cont în sistemul dvs.

} else if let passwordCredential = authorization.credential as? ASPasswordCredential {

// Conectați-vă folosind o autentificare iCloud Keychain existentă.

}

}




func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {

print(eroare)

}
  1. Gestionarea schimbărilor 🔀

Trebuie să fiți pregătit pentru faptul că utilizatorul, de exemplu, a încetat să mai folosească autentificarea aplicației folosind un ID Apple. Acest lucru ar trebui gestionat corect după ce utilizatorul relansează aplicația.

Folosind ID-ul de utilizator pe care l-am primit în timpul înregistrării contului, putem obține starea actuală a acreditării ID-ului Apple prin invocarea metodei getCredentialState foarte rapid. Această metodă poate returna trei stări:

  • autorizat — un utilizator autorizat care poate continua să utilizeze aplicația.
  • revocat — deconectați utilizatorul și, opțional, îl puteți conduce la ecranul de conectare pentru a vă conecta din nou.
  • notFound - înseamnă că utilizatorul nu a folosit anterior „Conectează-te cu Apple”. În acest moment, arătați utilizatorului și ecranul de conectare.

Invocarea metodei getCredentialState ar trebui să fie în AppDelegate în metoda didFinishLaunchingWithOptions .

În plus, Apple oferă Notificare, în care informează când acreditările au fost revocate și apoi trebuie să o gestionăm în modul menționat mai sus pentru această stare.

 appleIDProvider.getCredentialState(forUserID: userId) { credentialState, eroare în

comutați credentialState {

caz .autorizat:

// ID-ul Apple este valid.

caz .revocat:

// Acreditarea ID-ului Apple este revocată, deconectați-vă.

caz .notFound:

// Nu a fost găsită nicio acreditare, așa că afișați interfața de conectare.

Mod implicit:

pauză

}

}


// Înregistrați-vă pentru notificarea de revocare

NotificationCenter.default.addObserver(forName: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked,

obiect: zero,

coada: nil) { _ in

// Deconectați utilizatorul, opțional ghidați-l să se conecteze din nou

}

După implementarea tuturor celor patru etape în aplicația mea eșantion, totul funcționează 🎉🎉🎉 și arată astfel:

Trebuie să adaug „Conectați-vă cu Apple” la aplicația mea? 🤔

Dacă aplicația dvs. folosește o metodă de conectare terță parte, cum ar fi Facebook, Google sau LinkedIn, atunci trebuie să adăugați și Conectare cu Apple, conform noilor reguli. Dacă nu îl adăugați, cererea dvs. poate fi respinsă și poate să nu fie revizuită de Apple. Mai jos este un link către știri și un citat din ghid.

Noi orientări pentru conectarea cu Apple – 12 septembrie 2019 ⚠️

Începând de astăzi, noile aplicații trimise în App Store trebuie să respecte aceste reguli. Aplicațiile și actualizările existente trebuie să le urmeze până în aprilie 2020.

Mai jos sunt aplicații care oferă autentificare folosind noua funcție Apple, desigur, sunt din ce în ce mai multe în fiecare zi 😎

👨 ‍ 💻 Puteți verifica întregul proiect pe GitHub aici .

📚 Surse:

  • https://developer.apple.com/videos/play/wwdc2019/706/
  • https://developer.apple.com/videos/play/wwdc2019/516
  • https://developer.apple.com/sign-in-with-apple/get-started/
  • https://developer.apple.com/news/?id=09122019b
  • https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple