Accesso degli utenti con Apple
Questo documento mostra come utilizzare Identity Platform per aggiungere Accedi con Apple alla tua app web.
Prima di iniziare
Abilita Identity Platform e scrivi un'app web di base utilizzando HTML e JavaScript. Per scoprire come attivare Identity Platform ed eseguire l'accesso, consulta la guida rapida.
Partecipa all'Apple Developer Program.
Configurazione dell'app con Apple
Sul sito Apple Developer:
Segui i passaggi descritti in Configurare Sign in with Apple per il web. È incluso quanto segue:
Registrazione di un URL di reindirizzamento, simile a questo:
https://project-id.firebaseapp.com/__/auth/handler
Ospitare temporaneamente un file al seguente URL per verificare il tuo dominio:
https://project-id.firebaseapp.com/.well-known/apple-developer-domain-association.txt
Inoltre, prendi nota dell'ID servizi e dell'ID team Apple, poiché ti serviranno nella sezione successiva.
Utilizza una chiave privata Apple per creare un accesso. Nella sezione successiva avrai bisogno della chiave e del relativo ID.
Se utilizzi Identity Platform per inviare email ai tuoi utenti, configura il tuo progetto con il servizio di inoltro email privato di Apple utilizzando il seguente indirizzo email:
noreply@project-id.firebaseapp.com
Puoi anche utilizzare un modello email personalizzato, se la tua app ne ha uno.
Conformità ai requisiti di Apple per i dati anonimizzati
Apple offre agli utenti la possibilità di anonimizzare i propri dati, incluso
l'indirizzo email. Apple assegna agli utenti che selezionano questa opzione un indirizzo email
offuscato con il dominio privaterelay.appleid.com.
La tua app deve rispettare tutte le norme o i termini per gli sviluppatori vigenti di Apple relativi agli ID Apple anonimizzati. Ciò include l'ottenimento del consenso dell'utente prima di associare qualsiasi informazione che consente l'identificazione personale (PII) a un Apple ID anonimizzato. Le azioni che coinvolgono PII includono, a titolo esemplificativo:
- Collegamento di un indirizzo email a un Apple ID anonimo o viceversa.
- Collegamento di un numero di telefono a un Apple ID anonimizzato o viceversa
- Collegamento di una credenziale social non anonima, ad esempio Facebook o Google, a un Apple ID 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 fornitore
Per configurare Apple come provider di identità:
Vai alla pagina Provider di identità nella console Google Cloud .
Fai clic su Aggiungi un provider.
Seleziona Apple dall'elenco.
In Piattaforma, seleziona Web.
Inserisci ID servizi, ID team Apple, ID chiave e chiave privata.
Registra i domini della tua app facendo clic su Aggiungi dominio in Domini autorizzati. A scopo di sviluppo,
localhostè già attivato per impostazione predefinita.Nella sezione Configura la tua applicazione, fai clic su Dettagli di configurazione. Copia lo snippet nel codice della tua app per inizializzare l'SDK client di Identity Platform.
Fai clic su Salva.
Accesso degli utenti con l'SDK client
Per consentire l'accesso a un utente:
Crea un'istanza dell'oggetto fornitore
OAuthProviderutilizzando l'IDapple.com:Versione web 9
import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('apple.com');
Versione web 8
var provider = new firebase.auth.OAuthProvider('apple.com');
(Facoltativo) Aggiungi ambiti OAuth. Gli ambiti specificano i dati che stai richiedendo ad Apple. I dati più sensibili potrebbero richiedere ambiti specifici. Per impostazione predefinita, quando è attivata l'opzione Un account per indirizzo email, Identity Platform richiede gli ambiti
emailename.Versione web 9
provider.addScope('email'); provider.addScope('name');
Versione web 8
provider.addScope('email'); provider.addScope('name');
(Facoltativo) Localizza il flusso di autenticazione. Puoi specificare una lingua o utilizzare la lingua predefinita del dispositivo. Consulta la documentazione di Accedi con Apple per le impostazioni internazionali supportate.
Versione web 9
provider.setCustomParameters({ // Localize the Apple authentication screen in French. locale: 'fr' });
Versione web 8
provider.setCustomParameters({ // Localize the Apple authentication screen in French. locale: 'fr' });
Utilizza l'oggetto fornitore per consentire l'accesso all'utente. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Il reindirizzamento è più semplice per gli utenti su dispositivi mobili.
Per mostrare un popup, chiama
signInWithPopup():Versione web 9
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; // IdP data available using getAdditionalUserInfo(result) // ... }) .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 web 8
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; // IdP data available using getAdditionalUserInfo(result) // ... }) .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, chiama prima
signInWithRedirect():Segui le best practice quando utilizzi
signInWithRedirect,linkWithRedirectoreauthenticateWithRedirect.Versione web 9
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Versione web 8
firebase.auth().signInWithRedirect(provider);
Quindi, chiama
getRedirectResult()per recuperare il token Apple quando la pagina si carica:Versione web 9
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 web 8
// 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; // IdP data available in result.additionalUserInfo.profile. // ... } // 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 che puoi anche rilevare e gestire gli errori. Per un elenco dei codici di errore, consulta il Riferimento API.
A differenza di molti altri provider di identità, Apple non fornisce un URL della foto.
Se un utente sceglie di non condividere il proprio indirizzo email reale con la tua app, Apple fornisce
un indirizzo email univoco da condividere. 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 le informazioni utente, come i nomi visualizzati, con le app solo
la prima volta che un utente esegue l'accesso. Nella maggior parte dei casi, Identity Platform memorizza questi dati, che ti consentono 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
- Scopri come collegare gli account Apple ad altri provider. Tieni presente che Apple richiede di ottenere il consenso esplicito degli utenti prima di collegare i loro account Apple ad altri dati.
- Scopri di più sugli utenti di Identity Platform.
- Accedere con altri provider di identità.