Accedi con Apple: implementalo nella tua app!

Pubblicato: 2020-01-14

Accedi con Apple: una nuova funzionalità presentata da Apple al WWDC l'anno scorso, è ora disponibile da iOS 13. Questa funzione offre una registrazione dell'account semplice e sicura e l'accesso all'applicazione o al sito Web. Invece di compilare moduli di registrazione o accedere tramite i social media, ora puoi creare un account e accedere con il tuo ID Apple e verificare tramite Face ID, Touch ID o passcode.

Una breve descrizione di Accedi con Apple:

  • Configurazione dell'account e accesso facili e veloci
  • Indirizzi email verificati
  • Sicurezza integrata
  • Anti frode
  • Multipiattaforma ️
  • iOS 13+

In questo articolo, mi concentrerò sull'implementazione di base di Accedi con Apple su dispositivi iOS senza integrazione con la versione web o integrazione con il back-end.

Come funziona la funzione "Accedi con Apple"?

Accedi con Apple - interfaccia

Dopo aver toccato "Accedi con Apple" o "Continua con Apple" (dipende da quale pulsante è stato scelto per essere implementato nell'applicazione) viene visualizzata una finestra informativa con le possibilità di questa soluzione (secondo screenshot). Quindi, dopo aver toccato "Continua", otteniamo informazioni su quali dati verranno condivisi con il proprietario dell'applicazione.

Qui abbiamo due opzioni per registrare un account nell'applicazione utilizzando Accedi con Apple:

  1. Con la condivisione del nostro indirizzo e-mail , il tuo vero indirizzo e-mail verrà condiviso con l'applicazione o il sito Web.
  2. Nascondendo il nostro indirizzo e-mail , la tua vera e-mail non verrà condivisa con l'applicazione o il sito Web. Apple genererà un'e-mail univoca per te con il dominio @privaterelay.appleid.com. Non preoccuparti, tutte le email del proprietario dell'app verranno comunque inoltrate alla tua casella di posta, perché le email verranno inoltrate al nostro vero indirizzo email. Il proprietario dell'app conoscerà solo l'indirizzo email generato con il dominio Apple

Dopo aver selezionato una delle opzioni e aver toccato “Continua”, verifichiamo il nostro ID Apple come nel caso dello sblocco del telefono, ovvero tramite Face ID, Touch ID o inserendo il passcode. A questo punto, è necessario creare un account nell'applicazione/sito Web con un identificatore univoco per l'utente.

Quando hai utilizzato nell'applicazione "Accedi con Apple" in precedenza, puoi visualizzare in anteprima i dettagli di questo modo di accedere alle impostazioni e interrompere l'utilizzo di questa funzione. Per fare ciò, vai su Impostazioni > ID Apple > Password e sicurezza > App che utilizzano il tuo ID Apple > Scegli app.


Come implementare "Accedi con Apple"?

Dopo aver letto la parte teorica di “Accedi con Apple”, possiamo procedere all'implementazione

Accedi con Apple: primo passaggio dell'implementazione

Prima di tutto, devi aprire "Firma e funzionalità" nel tuo progetto, quindi premere + e aggiungere la funzionalità "Accedi con Apple".

Accedi con Apple: un processo di implementazione passo dopo passo

Apple al keynote del WWDC divide il processo di implementazione di questa funzionalità in quattro fasi. Tutte le fasi sono descritte di seguito.

1. Pulsante

All'inizio, dobbiamo aggiungere un pulsante al nostro schermo. Deve essere il pulsante ASAuthorizationAppleIDButton dal framework AuthenticationService . È disponibile in due colori (bianco e nero) con titoli diversi. Al pulsante, dobbiamo aggiungere un'azione che deve essere richiamata dopo averlo toccato. Descrivo l'azione di autorizzazione nel secondo punto.

 import AuthenticationServices

let button = ASAuthorizationAppleIDButton(tipo: .signIn, stile: .bianco)
button.addTarget(self, action: #selector(appleIdButtonClicked), for: .touchUpInside)
stackView.addArrangedSubview(pulsante)

2. Autorizzazione ️

Qui creiamo una richiesta di autorizzazione, in cui come requestedScopes forniamo solo le informazioni necessarie per creare un account nella nostra applicazione o sito web. Nel mio caso, questo è il nome completo e l'indirizzo email. Quindi impostare il delegato ed effettuare la richiesta.

 @objc func appleIdButtonClicked() {
    lascia richiesta = ASAuthorizationAppleIDProvider().createRequest()
    request.requestedScope = [.nome completo, .email]

    let controller = ASAuthorizationController(authorizationRequests: [richiesta])
    controllore.delegato = se stesso
    controller.presentationContextProvider = auto
    controller.performRequests()
}

3. Verifica

Dopo un rapido controllo tramite Face ID, Touch ID o passcode, verrà restituito il risultato dell'autorizzazione. Quando l'autorizzazione ha esito positivo, il metodo didCompleteWithAuthorization restituirà un oggetto di tipo AppleIdCredential . Quindi è necessario verificare se si tratta di credenziali del tipo ASAuthorizationAppleIdCredential — se sì, in questo oggetto troveremo tutti i dati necessari per configurare un account nel nostro sistema, come l'ID utente univoco, il nome completo e l'indirizzo email (che l'utente aveva richiesto in precedenza). A questo punto, possiamo procedere alla creazione di un account nel nostro sistema fornendo solo le informazioni necessarie. Se si verifica un errore, verrà restituito nel metodo didCompleteWithError , dove possiamo gestire questo errore.

 funcauthorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization autorizzazione: ASAuthorization) {
    se lascia appleIDCredential = autorizzazione.credential come? ASAutorizzazioneAppleIDCredential {
        // Crea un account nel tuo sistema.
    } altrimenti se lascia passwordCredential =authorization.credential as? ASPasswordCredential {
        // Accedi utilizzando una credenziale portachiavi iCloud esistente.
    }
}

funcauthorizationController(controller: ASAuthorizationController, errore didCompleteWithError: errore) {
    stampa (errore)
}

4. Gestione delle modifiche

Devi essere preparato al fatto che l'utente, ad esempio, ha smesso di utilizzare l'accesso all'applicazione utilizzando un ID Apple. Questo dovrebbe essere gestito correttamente dopo che l'utente ha riavviato l'applicazione.

Utilizzando l'ID utente che abbiamo ricevuto durante la registrazione dell'account, possiamo ottenere lo stato corrente della credenziale ID Apple richiamando molto rapidamente il metodo getCredentialState . Questo metodo può restituire tre stati:

  • authorized — un utente autorizzato che può continuare a utilizzare l'applicazione.
  • revoked : disconnettere l'utente e, facoltativamente, portarlo alla schermata di accesso per accedere nuovamente.
  • notFound : significa che l'utente non ha utilizzato in precedenza "Accedi con Apple". A questo punto mostra all'utente anche la schermata di login.

Il metodo getCredentialState invoke dovrebbe trovarsi in AppDelegate nel metodo didFinishLaunchingWithOptions .

Inoltre, Apple fornisce Notification, in cui informa quando le credenziali sono state revocate e quindi dobbiamo gestirlo nel modo sopra menzionato per questo stato.

 appleIDProvider.getCredentialState(forUserID: userId) {credentialState, errore in
    cambia statocredenziale {
    caso .autorizzato:
        // Le credenziali dell'ID Apple sono valide.
    caso .revocato:
        // Le credenziali dell'ID Apple sono state revocate, esci.
    caso .non trovato:
        // Nessuna credenziale trovata, quindi mostra l'interfaccia utente di accesso.
    predefinito:
        rompere
    }
}

// Registrati per la notifica di revoca
NotificationCenter.default.addObserver(forName: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked, 
                                       oggetto: zero,
                                       coda: zero) { _ in
    // Disconnetti l'utente, facoltativamente guidalo ad accedere di nuovo
}

Dopo aver implementato tutte e quattro le fasi nella mia applicazione di esempio, tutto funziona e si presenta così:

Accesso implementato con Apple

Devo aggiungere "Accedi con Apple" alla mia app?

Se la tua applicazione utilizza un metodo di accesso di terze parti come Facebook, Google o LinkedIn, devi aggiungere anche Accedi con Apple in base alle nuove linee guida. Se non lo aggiungi, la tua domanda potrebbe essere rifiutata e potrebbe non essere esaminata da Apple. Di seguito un link alla notizia e una citazione dalle linee guida.

Nuove linee guida per l'accesso con Apple: 12 settembre 2019 ️

A partire da oggi, le nuove app inviate all'App Store devono seguire queste linee guida. Le app e gli aggiornamenti delle app esistenti devono seguirli entro aprile 2020.


Di seguito sono elencate le applicazioni che offrono l'accesso utilizzando la nuova funzionalità di Apple, ovviamente, ce ne sono sempre di più ogni giorno

Esempi di app che utilizzano la funzione Accedi con Apple

Puoi controllare l'intero progetto sul mio GitHub qui.

Fonti:

  • 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