Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Accesso degli utenti con Apple

Questo documento mostra come utilizzare Identity Platform per aggiungere Accedi con Apple alla tua app web.

Prima di iniziare

Configurare l'app con Apple

Sul sito per sviluppatori Apple:

  1. Segui i passaggi descritti in Configurare la funzionalità Accedi con Apple per il Web. tra cui:

    1. Registrare un Return URL, che ha il seguente aspetto:

      https://project-id.firebaseapp.com/__/auth/handler
      
    2. Ospita temporaneamente un file al seguente URL per verificare il tuo dominio:

      https://project-id.firebaseapp.com/.well-known/apple-developer-domain-association.txt
      

    Inoltre, annota il tuo ID servizi e l'ID team Apple: ti serviranno nella prossima sezione.

  2. Crea una chiave privata di Accedi con Apple. Ti servirà la chiave e il relativo ID nella sezione successiva.

  3. Se utilizzi Identity Platform per inviare email agli utenti, configura il progetto con il servizio di inoltro privato di Apple utilizzando il seguente indirizzo email:

    noreply@project-id.firebaseapp.com
    

    Puoi anche usare un modello di email personalizzato, se la tua app ne ha uno.

Rispetto dei requisiti di dati anonimizzati di Apple

Apple offre agli utenti la possibilità di rendere anonimi i propri dati, incluso il loro indirizzo email. Apple assegna agli utenti che selezionano questa opzione un indirizzo email offuscato con il dominio privaterelay.appleid.com.

La tua app deve essere conforme a eventuali termini o norme applicabili per gli sviluppatori relativi ad ID Apple anonimizzati. Dovrai ottenere il consenso degli utenti prima di associare eventuali informazioni che consentono l'identificazione personale (PII) a un ID Apple anonimo. Le azioni che riguardano PII includono, a titolo esemplificativo:

  • Collegare un indirizzo email a un ID Apple anonimizzato o viceversa.
  • Collegamento di un numero di telefono a un ID Apple anonimizzato o viceversa
  • Collegare una credenziale social anonima, ad esempio Facebook o Google, a un ID Apple anonimizzato o viceversa.

Per ulteriori informazioni, consulta il Contratto di licenza del programma per sviluppatori Apple per il tuo account sviluppatore Apple.

Configurazione di Apple come provider

Per configurare Apple come provider di identità:

  1. Vai alla pagina Provider di Identity Platform nella console Google Cloud.

    Vai alla pagina Provider di identità

  2. Fai clic su Aggiungi un fornitore.

  3. Seleziona Apple dall'elenco.

  4. In Piattaforma, seleziona Web.

  5. Inserisci l'ID servizi, l'ID team Apple, l'ID chiave e la chiave privata.

  6. Registra i domini della tua app facendo clic su Aggiungi dominio nella sezione Domini autorizzati. A scopo di sviluppo, localhost è già attivato per impostazione predefinita.

  7. In Configura la tua applicazione, fai clic su Dettagli configurazione. Copia lo snippet nel codice della tua app per inizializzare l'SDK client di Identity Platform.

  8. Fai clic su Salva.

Accesso degli utenti con l'SDK client

Per accedere come utente:

  1. Crea un'istanza dell'oggetto provider OAuthProvider, utilizzando l'ID apple.com:

    Versione 9 del Web

    import { OAuthProvider } from "firebase/auth";
    
    const provider = new OAuthProvider('apple.com');

    Versione 8 web

    var provider = new firebase.auth.OAuthProvider('apple.com');
  2. (Facoltativo) Aggiungi ambiti di OAuth. Gli ambiti specificano i dati richiesti da Apple. Dati più sensibili potrebbero richiedere ambiti specifici. Per impostazione predefinita, quando è abilitato un account per indirizzo email, Identity Platform richiede gli ambiti email e name.

    Versione 9 del Web

    provider.addScope('email');
    provider.addScope('name');

    Versione 8 web

    provider.addScope('email');
    provider.addScope('name');
  3. (Facoltativo) Localizza il flusso di autenticazione. Puoi specificare una lingua o usare la lingua predefinita del dispositivo. Consulta la documentazione di Accedi con Apple per le impostazioni internazionali supportate.

    Versione 9 del Web

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });

    Versione 8 web

    provider.setCustomParameters({
      // Localize the Apple authentication screen in French.
      locale: 'fr'
    });
  4. Utilizzare l'oggetto provider per effettuare l'accesso dell'utente. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Il reindirizzamento è più semplice per gli utenti sui dispositivi mobili.

    Per mostrare un popup, chiama signInWithPopup().

    Versione 9 del Web

    import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    signInWithPopup(auth, provider)
      .then((result) => {
        // The signed-in user info.
        const user = result.user;
    
        // Apple credential
        const credential = OAuthProvider.credentialFromResult(result);
        const accessToken = credential.accessToken;
        const idToken = credential.idToken;
    
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.customData.email;
        // The credential that was used.
        const credential = OAuthProvider.credentialFromError(error);
    
        // ...
      });

    Versione 8 web

    firebase
      .auth()
      .signInWithPopup(provider)
      .then((result) => {
        /** @type {firebase.auth.OAuthCredential} */
        var credential = result.credential;
    
        // The signed-in user info.
        var user = result.user;
    
        // You can also get the Apple OAuth Access and ID Tokens.
        var accessToken = credential.accessToken;
        var idToken = credential.idToken;
    
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
    
        // ...
      });

    Per reindirizzare la pagina, per prima cosa chiama signInWithRedirect():

    Segui le best practice quando utilizzi signInWithRedirect, linkWithRedirect o reauthenticateWithRedirect.

    Versione 9 del Web

    import { getAuth, signInWithRedirect } from "firebase/auth";
    
    const auth = getAuth();
    signInWithRedirect(auth, provider);

    Versione 8 web

    firebase.auth().signInWithRedirect(provider);

    Quindi, chiama getRedirectResult() per recuperare il token Apple quando la pagina viene caricata:

    Versione 9 del Web

    import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth";
    
    // Result from Redirect auth flow.
    const auth = getAuth();
    getRedirectResult(auth)
      .then((result) => {
        const credential = OAuthProvider.credentialFromResult(result);
        if (credential) {
          // You can also get the Apple OAuth Access and ID Tokens.
          const accessToken = credential.accessToken;
          const idToken = credential.idToken;
        }
        // The signed-in user info.
        const user = result.user;
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.customData.email;
        // The credential that was used.
        const credential = OAuthProvider.credentialFromError(error);
    
        // ...
      });

    Versione 8 web

    // Result from Redirect auth flow.
    firebase
      .auth()
      .getRedirectResult()
      .then((result) => {
        if (result.credential) {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
    
          // You can get the Apple OAuth Access and ID Tokens.
          var accessToken = credential.accessToken;
          var idToken = credential.idToken;
    
          // ...
        }
        // The signed-in user info.
        var user = result.user;
      })
      .catch((error) => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
    
        // ...
      });

    Qui puoi anche rilevare e gestire gli errori. Per un elenco dei codici di errore, consulta la documentazione relativa all'API.

A differenza di molti altri provider di identità, Apple non fornisce l'URL di una foto.

Se un utente sceglie di non condividere la propria email reale con l'app, Apple esegue il provisioning di un indirizzo email univoco da condividere con quell'utente. Questa email ha il formato xyz@privaterelay.appleid.com. Se hai configurato il servizio di inoltro email privato, Apple inoltra le email inviate all'indirizzo anonimo all'indirizzo email reale dell'utente.

Apple condivide con app le informazioni degli utenti, ad esempio i nomi visualizzati, al primo accesso degli utenti. Nella maggior parte dei casi, Identity Platform archivia questi dati, il che ti consente di recuperarli utilizzando firebase.auth().currentUser.displayName durante le sessioni future. Tuttavia, se hai consentito agli utenti di accedere alla tua app utilizzando Apple prima dell'integrazione con Identity Platform, le informazioni utente non sono disponibili.

Passaggi successivi