Accesso degli utenti con Apple su Android
Questo documento mostra come utilizzare Identity Platform per aggiungere la funzionalità Accedi con Apple alla tua app per Android.
Prima di iniziare
Creare un'app per Android che utilizza Identity Platform.
Partecipa all'Apple Developer Program.
Configurare l'app con Apple
Sul sito Apple Developer:
Segui i passaggi descritti in Configurare l'accesso con Apple per il web. Ciò include:
La registrazione di un URL di ritorno, simile al seguente:
https://project-id.firebaseapp.com/__/auth/handler
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, prendi nota del tuo ID servizi e dell'ID team Apple, che ti serviranno nella prossima sezione.
Usa una chiave privata Apple per creare un accesso. La chiave e il relativo ID saranno necessari nella prossima sezione.
Se utilizzi Identity Platform per inviare email ai tuoi 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.
Conformità ai requisiti relativi ai dati anonimizzati di Apple
Apple offre agli utenti la possibilità di rendere anonimi i loro 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 tutti i termini o le norme per gli sviluppatori applicabili di 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 coinvolgono PII includono, a titolo esemplificativo:
- Puoi collegare un indirizzo email a un ID Apple anonimo o viceversa.
- Collegare un numero di telefono a un ID Apple anonimo o viceversa.
- Collegare una credenziale social non anonima, come Facebook o Google, all'ID Apple anonimo o viceversa.
Per ulteriori informazioni, leggi 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 identità nella console Google Cloud.
Fai clic su Add a Provider (Aggiungi un provider).
Seleziona Apple dall'elenco.
In Piattaforma, seleziona Android.
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à abilitato per impostazione predefinita.In Configura la tua applicazione, fai clic su Android. 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
Crea un'istanza dell'oggetto provider
OAuthProvider
, utilizzando l'IDapple.com
:Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");
Kotlin
val provider = OAuthProvider.newBuilder("apple.com")
Facoltativo:aggiungi ambiti OAuth. Gli ambiti specificano quali dati stai chiedendo a Apple. Dati più sensibili potrebbero richiedere ambiti specifici. Per impostazione predefinita, quando è abilitata l'opzione Un solo account per indirizzo email, Identity Platform richiede gli ambiti
email
ename
.Java
List<String> scopes = new ArrayList<String>() { { add("email"); add("name"); } }; provider.setScopes(scopes);
Kotlin
provider.setScopes(arrayOf("email", "name"))
(Facoltativo) Localizza il flusso di autenticazione. Puoi specificare una lingua o utilizzare la lingua predefinita del dispositivo:
Java
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");
Kotlin
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");
Accedi all'utente con Identity Platform.
Controlla se è già presente una risposta chiamando
startActivityForSignInWithProvider()
:Java
mAuth = FirebaseAuth.getInstance(); Task<AuthResult> pending = mAuth.getPendingAuthResult(); if (pending != null) { pending.addOnSuccessListener(new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { Log.d(TAG, "checkPending:onSuccess:" + authResult); // Get the user profile with authResult.getUser() and // authResult.getAdditionalUserInfo(), and the ID // token from Apple with authResult.getCredential(). } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "checkPending:onFailure", e); } }); } else { Log.d(TAG, "pending: null"); }
Kotlin
val pending = auth.pendingAuthResult if (pending != null) { pending.addOnSuccessListener { authResult -> Log.d(TAG, "checkPending:onSuccess:$authResult") // Get the user profile with authResult.getUser() and // authResult.getAdditionalUserInfo(), and the ID // token from Apple with authResult.getCredential(). }.addOnFailureListener { e -> Log.w(TAG, "checkPending:onFailure", e) } } else { Log.d(TAG, "pending: null") }
Quando accedi, la tua attività viene messa in background, il che significa che il sistema può rivendicarla durante il flusso di autenticazione. Controllare se è già presente un risultato impedisce all'utente di dover accedere due volte.
Se non ci sono risultati in attesa, chiama
startActivityForSignInWithProvider()
:Java
mAuth.startActivityForSignInWithProvider(this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // Sign-in successful! Log.d(TAG, "activitySignIn:onSuccess:" + authResult.getUser()); FirebaseUser user = authResult.getUser(); // ... } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "activitySignIn:onFailure", e); } });
Kotlin
auth.startActivityForSignInWithProvider(this, provider.build()) .addOnSuccessListener { authResult -> // Sign-in successful! Log.d(TAG, "activitySignIn:onSuccess:${authResult.user}") val user = authResult.user // ... } .addOnFailureListener { e -> Log.w(TAG, "activitySignIn:onFailure", e) }
A differenza di molti altri provider di identità, Apple non fornisce l'URL di una foto.
Se un utente sceglie di non condividere il suo indirizzo email reale con la tua app, Apple fornisce un indirizzo email univoco che l'utente potrà condividere. Questa email ha il formato
xyz@privaterelay.appleid.com
. Se hai configurato il servizio di inoltro delle email private, Apple inoltra le email inviate all'indirizzo anonimo all'indirizzo email reale dell'utente.
Apple condivide con le app solo le informazioni degli utenti, ad esempio i nomi visualizzati, la prima volta che un utente esegue l'accesso. Nella maggior parte dei casi, Identity Platform archivia questi dati, consentendoti 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 saranno disponibili.
Passaggi successivi
- Scopri di più sugli utenti di Identity Platform.
- Accedere agli utenti con altri provider di identità.