Conectați-vă cu Apple - implementați-l în aplicația dvs.!

Publicat: 2020-01-14

Conectați-vă cu Apple — o nouă caracteristică 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, puteți acum să vă creați un cont și să vă conectați cu ID-ul Apple și să verificați 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.

Cum funcționează funcția „Conectare cu Apple”?

Conectați-vă cu Apple - interfață

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:

  1. Cu partajarea adresei noastre de e-mail — adresa dvs. de e-mail reală va fi partajată aplicației sau site-ului web.
  2. 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”, verificăm ID-ul nostru Apple ca și în cazul deblocării telefonului, adică prin Face ID, Touch ID sau prin introducerea codului de acces. Î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.


Cum se implementează „Conectează-te cu Apple”?

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

Conectați-vă cu Apple - primul pas de implementare

În primul rând, trebuie să deschideți „Signing & Capabilities” în proiectul dvs., apoi apăsați + și adăugați capacitatea „Sign In With Apple”.

Conectați-vă cu Apple - un proces de implementare pas cu pas

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

butonul let = ASAuthorizationAppleIDButton (tip: .signIn, stil: .alb)
button.addTarget(self, action: #selector(appleIdButtonClicked), pentru: .touchUpInside)
stackView.addArrangedSubview(button)

2. Autorizare ️

Aici creăm o solicitare de autorizare, în care, după cum este requestedScopes , 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()
}

3. 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ă sunt acreditări de tip ASAuthorizationAppleIdCredential — dacă da, în acest obiect vom găsi toate datele necesare pentru a configura un cont în sistemul nostru, 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)
}

4. Gestionarea schimbărilor

Trebuie să fii 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:

  • authorized — un utilizator autorizat care poate continua să utilizeze aplicația.
  • revoked — 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:
        // Acreditarea ID-ului Apple este validă.
    caz .revocat:
        // Acreditarea ID-ului Apple este revocată, deconectați-vă.
    caz .notFound:
        // Nu a fost găsită nicio acreditare, deci 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:

Conectare implementată cu Apple

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

Exemple de aplicații care utilizează funcția Conectare cu Apple

Puteți verifica întregul proiect pe GitHub-ul meu 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