Procéder à la connexion des utilisateurs avec Apple sur Android
Ce document explique comment utiliser Identity Platform pour ajouter Se connecter avec Apple à votre application Android.
Avant de commencer
Créez une application Android utilisant Identity Platform.
Rejoignez le programme Apple Developer.
Configurer votre application avec Apple
Sur le site Apple Developer :
Suivez les étapes de l'article Configure Sign in with Apple for the web. Par exemple :
Enregistrez une URL de renvoi, semblable à celle-ci :
https://project-id.firebaseapp.com/__/auth/handler
Hébergez temporairement un fichier à l'URL suivante pour valider votre domaine :
https://project-id.firebaseapp.com/.well-known/apple-developer-domain-association.txt
Notez également votre ID de service et votre ID d'équipe Apple. Vous en aurez besoin dans la section suivante.
Créer une connexion à l'aide d'une clé privée Apple Vous aurez besoin de la clé et de son ID dans la section suivante.
Si vous utilisez Identity Platform pour envoyer des e-mails à vos utilisateurs, configurer votre projet avec le service de relais de messagerie privé d'Apple. à l'aide de l'adresse e-mail suivante:
noreply@project-id.firebaseapp.com
Vous pouvez également utiliser un modèle d'e-mail personnalisé, si votre application en possède un.
Conformité avec les exigences de données anonymes d'Apple
Apple offre aux utilisateurs la possibilité d'anonymiser leurs données, y compris leur adresse e-mail. Apple attribue aux utilisateurs qui sélectionnent cette option une adresse e-mail masquée contenant le domaine privaterelay.appleid.com
.
Votre application doit respecter le règlement pour les développeurs ou les conditions d'utilisation d'Apple concernant les identifiants Apple anonymes. Cela inclut l'obtention de l'autorisation de l'utilisateur avant d'associer des informations personnelles à un identifiant Apple anonyme. Les actions impliquant des informations personnelles incluent, sans s'y limiter :
- Associer une adresse e-mail à un identifiant Apple anonyme, ou inversement
- Associer un numéro de téléphone à un identifiant Apple anonyme, ou inversement
- Associer un identifiant de réseau social non anonyme, tel que Facebook ou Google, à un identifiant Apple anonyme, ou inversement
Pour plus d'informations, reportez-vous au Contrat de licence du programme Apple Developer associé à votre compte de développeur Apple.
Configurer Apple en tant que fournisseur
Pour configurer Apple en tant que fournisseur d'identité :
Accédez à la page Fournisseurs d'identité dans la console Google Cloud.
Cliquez sur Ajouter un fournisseur.
Dans la liste, sélectionnez Apple.
Sous Plate-forme, sélectionnez Android.
Saisissez votre ID de service, votre ID d'équipe Apple, votre ID de clé et votre clé privée.
Enregistrez les domaines de votre application en cliquant sur Ajouter un domaine sous Domaines autorisés. À des fins de développement,
localhost
est déjà activé par défaut.Sous Configurer votre application, cliquez sur Android. Copiez l'extrait dans le code de votre application pour initialiser le SDK client Identity Platform.
Cliquez sur Enregistrer.
Connecter des utilisateurs avec le SDK client
Créez une instance de l'objet de fournisseur
OAuthProvider
en utilisant l'IDapple.com
:Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");
Kotlin
val provider = OAuthProvider.newBuilder("apple.com")
Facultatif : Ajoutez des champs d'application OAuth. Les champs d'application spécifient les données que vous demandez à Apple. Des données plus sensibles peuvent nécessiter des champs d'application spécifiques. Par défaut, lorsque l'option Un compte par adresse e-mail est activée, Identity Platform demande les champs d'application
email
etname
.Java
List<String> scopes = new ArrayList<String>() { { add("email"); add("name"); } }; provider.setScopes(scopes);
Kotlin
provider.setScopes(arrayOf("email", "name"))
Facultatif : Localisez le flux d'authentification. Vous pouvez spécifier un langage ou utiliser le langage par défaut de l'appareil :
Java
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");
Kotlin
// Localize the Apple authentication screen in French. provider.addCustomParameter("locale", "fr");
Procédez à la connexion de l'utilisateur avec Identity Platform.
Pour vérifier si une réponse est déjà présente, appelez la méthode
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") }
La connexion place votre activité en arrière-plan, ce qui signifie que le système peut la récupérer pendant le flux d'authentification. Vérifier si un résultat est déjà présent empêche l'utilisateur de se connecter deux fois.
Si aucun résultat n'est en attente, appelez
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) }
Contrairement à de nombreux autres fournisseurs d'identité, Apple ne fournit pas d'URL de photo.
Si un utilisateur choisit de ne pas partager son véritable adresse e-mail avec votre application, Apple provisionne une adresse e-mail unique à la place. Cette adresse e-mail se présente sous la forme suivante : xyz@privaterelay.appleid.com
. Si vous avez configuré le service de relais de messagerie privé, Apple transfère les e-mails envoyés à l'adresse anonyme à l'adresse e-mail réelle de l'utilisateur.
Apple ne partage des informations utilisateur, telles que les noms à afficher, qu'avec les applications la première fois qu'un utilisateur se connecte. Dans la plupart des cas, Identity Platform stocke ces données, ce qui vous permet de les récupérer à l'aide de firebase.auth().currentUser.displayName
lors des sessions futures. Toutefois, si vous avez autorisé les utilisateurs à se connecter à votre application à l'aide d'Apple avant l'intégration à Identity Platform, les informations sur l'utilisateur ne sont pas disponibles.
Étape suivante
- En savoir plus sur les utilisateurs d'Identity Platform.
- Procéder à la connexion des utilisateurs avec d'autres fournisseurs d'identité.