Accesso degli utenti con Apple su Android
Questo documento spiega come utilizzare Identity Platform per aggiungere Accedi con Apple alla tua app per Android.
Prima di iniziare
Crea 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 Accedi con Apple per il web. tra cui:
Registra un URL di ritorno, che ha il seguente aspetto:
https://project-id.firebaseapp.com/__/auth/handler
Ospitando temporaneamente un file all'URL seguente 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 del tuo 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 agli utenti, configurare il progetto con il servizio di inoltro email 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.
Conformità ai requisiti di Apple relativi ai dati anonimizzati
Apple offre agli utenti la possibilità di anonimizzare i propri dati, incluso il loro indirizzo email. Apple assegna agli utenti che selezionano questa opzione un'immagine offuscata
indirizzo email con il dominio privaterelay.appleid.com
.
La tua app deve rispettare tutte le norme per gli sviluppatori o i termini applicabili di Apple sugli 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 anonimizzato. Le azioni che coinvolgono le PII includono, a titolo esemplificativo:
- Collegamento di un indirizzo email a un Apple ID anonimizzato o viceversa.
- Collegamento di un numero di telefono a un Apple ID anonimizzato o viceversa
- Collegare una credenziale social non anonima, come Facebook o Google, a in un ID Apple anonimizzato 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 l'ID servizio, l'ID team Apple, l'ID chiave e Chiave privata.
Registra i domini dell'app facendo clic su Aggiungi dominio nella sezione Domini autorizzati. Ai fini dello sviluppo,
localhost
è già sono abilitate per impostazione predefinita.Nella sezione Configura l'applicazione, fai clic su Android. Copia lo snippet nel codice dell'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 gli ambiti OAuth. Gli ambiti specificano quali dati sei una richiesta da Apple. I dati più sensibili potrebbero richiedere scopi specifici. Per impostazione predefinita, quando è attiva l'opzione Un 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 utilizza 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.
Per verificare se è già presente una risposta, chiama
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ò recuperarla durante il flusso di autenticazione. Verificare la presenza di un risultato già presente impedisce all'utente di dover eseguire l'accesso 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 delle 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 seguente formato:
xyz@privaterelay.appleid.com
. Se hai configurato l'inoltro di email private
servizio, Apple inoltra le email inviate all'indirizzo anonimo all'indirizzo
.
Apple condivide le informazioni degli utenti, ad esempio i nomi visualizzati, con le app solo la prima volta che un utente accede. Nella maggior parte dei casi, Identity Platform memorizza questi
dati, che puoi recuperare 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 degli utenti
non è disponibile.
Passaggi successivi
- Scopri di più sugli utenti di Identity Platform.
- Consentire agli utenti di accedere con altri provider di identità.