Accesso degli utenti con Apple
Questo documento mostra come utilizzare Identity Platform per aggiungere Accedi con Apple alla tua app web.
Prima di iniziare
Creare un'app web di base che utilizzi Identity Platform con HTML e JavaScript. Consulta la Guida rapida per scoprire come fare.
Partecipa al Apple Developer Program.
Configurare l'app con Apple
Sul sito per sviluppatori Apple:
Segui i passaggi descritti in Configurare Accedi con Apple per il Web. tra cui:
La registrazione di un URL di ritorno simile al seguente:
https://project-id.firebaseapp.com/__/auth/handler
Ospitare un file temporaneamente al seguente URL per verificare il tuo dominio:
https://project-id.firebaseapp.com/.well-known/apple-developer-domain-association.txt
Inoltre, prendi nota dei tuoi ID servizi e ID team Apple: ti serviranno nella prossima sezione.
Crea una chiave privata Accedi con Apple. Avrai bisogno della chiave e del relativo ID nella sezione successiva.
Se utilizzi Identity Platform per inviare email agli utenti, configura il 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 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, compreso 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 essere conforme a tutti i termini o alle norme per gli sviluppatori applicabili relativi a Apple in merito agli ID Apple anonimizzati. Ciò include l'ottenimento del consenso dell'utente 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:
- Collegamento di un indirizzo email a un ID Apple anonimo o viceversa.
- Collegamento di un numero di telefono a un ID Apple anonimo o viceversa
- Collegamento di una credenziale sociale anonima, come Facebook o Google, a un ID Apple anonimo 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à:
Vai alla pagina Provider di Identity Platform nella console Google Cloud.
Fai clic su Aggiungi un fornitore.
Seleziona Apple dall'elenco.
In Piattaforma, seleziona Web.
Inserisci l'ID servizi, l'ID team Apple, l'ID chiave e la 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.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.
Fai clic su Salva.
Accesso degli utenti con l'SDK del client
Per eseguire l'accesso di un utente:
Crea un'istanza dell'oggetto provider
OAuthProvider
, utilizzando l'IDapple.com
:Versione 9 web
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 possono richiedere ambiti specifici. Per impostazione predefinita, quando è abilitato Un account per indirizzo email, Identity Platform richiede gli ambiti
email
ename
.Versione 9 web
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 9 web
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 provider per eseguire l'accesso dell'utente. Puoi aprire una finestra popup o reindirizzare la pagina corrente. Reindirizzare gli utenti sui dispositivi mobili è più facile.
Per mostrare un popup, chiama
signInWithPopup()
:Versione 9 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; // 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
,linkWithRedirect
oreauthenticateWithRedirect
.Versione 9 web
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 viene caricata:Versione 9 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 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 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 l'URL di una foto.
Se un utente sceglie di non condividere la propria email con l'app, Apple eseguirà il provisioning di un indirizzo email univoco che potrà condividere con quell'utente. Questa email ha il seguente 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, ad esempio i nomi visualizzati, con le app la prima volta che un utente esegue l'accesso. 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 all'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 fornitori. Tieni presente che Apple richiede il consenso esplicito degli utenti prima di collegare i loro account Apple ad altri dati.
- Scopri di più sugli utenti di Identity Platform.
- Accesso degli utenti con altri provider di identità.