Vous pouvez permettre à vos utilisateurs de s'authentifier auprès de Firebase à l'aide de leur compte Google en intégrant Google Sign-In à votre application.
Avant de commencer
Configurer votre projet Unity
Avant de pouvoir utiliser Firebase Authentication, vous devez :
Enregistrez votre projet Unity et configurez-le pour utiliser Firebase.
Si votre projet Unity utilise déjà Firebase, il est déjà enregistré et configuré pour Firebase.
Si vous n'avez pas de projet Unity, vous pouvez télécharger un exemple d'application.
Ajoutez le SDK Firebase Unity (plus précisément,
FirebaseAuth.unitypackage) à votre projet Unity.
Notez que l'ajout de Firebase à votre projet Unity implique des tâches à la fois dans la console Firebase et dans votre projet Unity ouvert (par exemple, vous téléchargez des fichiers de configuration Firebase depuis la console, puis vous les déplacez dans votre projet Unity).
Configurer votre projet Firebase et vos identifiants
Android : spécifiez l'empreinte SHA-1 de votre application dans la console Firebase :
- Dans la console Firebase, accédez à
Paramètres > onglet Général. Accédez à la fiche Vos applications, sélectionnez votre application Android, puis ajoutez votre empreinte SHA-1 dans le champ Empreintes de certificat SHA.
Vous pouvez récupérer l'empreinte SHA-1 de votre keystore à l'aide de
keytool:keytool -keystore path-to-keystore.keystore -list -vPour en savoir plus sur l'obtention de l'empreinte SHA de votre application, consultez Authentifier votre client.
- Dans la console Firebase, accédez à
Activez Google Sign-In et copiez votre ID client Web :
- Dans la console Firebase, accédez à Sécurité > Authentification.
- Dans l'onglet Mode de connexion, activez le fournisseur de connexion Google.
- Développez la section Configuration du SDK Web et copiez votre ID client Web (par exemple,
123456-abc.apps.googleusercontent.com). Il représente la revendication d'audience (aud) de vos jetons d'ID et est requis pour Android et iOS. - Cliquez sur Enregistrer.
Mettez à jour vos fichiers de configuration Firebase et copiez votre ID client inversé iOS :
- Téléchargez les derniers fichiers de configuration Firebase depuis la console Firebase (
pour Android etgoogle-services.json pour iOS), puis remplacez les anciennes copies dans votre projet Unity. (Consultez Ajouter Firebase à votre projet Unity.)GoogleService-Info.plist - iOS : ouvrez votre fichier
et copiez la valeur de la cléGoogleService-Info.plist REVERSED_CLIENT_ID(par exemple,com.googleusercontent.apps.12345-abc). Cette valeur est requise pour configurer le schéma d'URL de redirection iOS.
- Téléchargez les derniers fichiers de configuration Firebase depuis la console Firebase (
Intégrer le plug-in Google Sign-In à votre projet Unity
Importez le plug-in :
- Si vous intégrez le plug-in à un projet existant, sauvegardez votre projet et supprimez les anciens plug-ins Google Sign-In avant de continuer.
- Téléchargez
GoogleSignInNative.unitypackagedepuis GitHub et importez-le dans votre projet Unity (Assets > Import Package > Custom Package). Vérifiez que tous les fichiers sont sélectionnés, puis cliquez sur Importer.
Configurez les paramètres du plug-in :
- Dans l'éditeur Unity, accédez à Window > Google Sign-In Native > Settings (Fenêtre > Connexion Google native > Paramètres).
- Collez votre ID client Web dans le premier champ.
- Collez votre ID client inversé iOS dans le deuxième champ.
- Cliquez sur Save Settings (Enregistrer les paramètres).
Résoudre les dépendances natives :
- Accédez à Assets > External Dependency Manager > Android Resolver > Force Resolve (Éléments > Gestionnaire de dépendances externes > Résolution forcée).
- Attendez le message de réussite. Cette opération télécharge les bibliothèques Credential Manager natives
googleidetandroidx.
Accéder à la classe Firebase.Auth.FirebaseAuth
La classe FirebaseAuth est la passerelle pour tous les appels d'API.
Il est accessible via FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
S'authentifier avec Firebase
Configurez
GoogleSignInManagerdans votre scène :- Créez un
GameObjectvide dans votre scène initiale nomméeGoogleSignInManager. - Associez-lui le script
GoogleSignInManager.cs. - Faites glisser l'élément
GoogleSignInNativeSettings(situé dansAssets/GoogleSignInNative/Resources) vers l'emplacement Sign In Settings (Paramètres de connexion) du script.
- Créez un
Déclenchez Google Sign-In et échangez le jeton d'ID contre un identifiant Firebase :
Créez un script de contrôleur qui s'abonne à
GoogleSignInManager.OnSignInCompletedetGoogleSignInManager.OnSignInFailed, déclenche la connexion avecGoogleSignInManager.Instance.StartSignIn()et échange le jeton d'ID Google obtenu contre un identifiant Firebase à l'aide deGoogleAuthProvider.GetCredential:using Firebase.Auth; using Firebase.Extensions; using UnityEngine; public class MyAuthController : MonoBehaviour { private FirebaseAuth auth; private void Awake() { auth = FirebaseAuth.DefaultInstance; } private void OnEnable() { GoogleSignInManager.OnSignInCompleted += HandleSignInSuccess; GoogleSignInManager.OnSignInFailed += HandleSignInFailure; } private void OnDisable() { GoogleSignInManager.OnSignInCompleted -= HandleSignInSuccess; GoogleSignInManager.OnSignInFailed -= HandleSignInFailure; } public void OnSignInButtonClick() { GoogleSignInManager.Instance.StartSignIn(); } private void HandleSignInSuccess(string idToken) { Debug.Log("[Auth] Google Sign-In succeeded. Authenticating with Firebase..."); Credential credential = GoogleAuthProvider.GetCredential(idToken, null); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWithOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); }); } private void HandleSignInFailure(string error) { Debug.LogError($"[Auth] Google Sign-In failed: {error}"); } }
Créer votre application
Android
- Assurez-vous que le nom du package dans Player Settings (Paramètres du lecteur) correspond exactement à vos identifiants OAuth Firebase et Google Cloud.
- Assurez-vous que le niveau d'API minimal est défini sur 34 ou plus.
- Cliquez sur Build and Run (Compiler et exécuter).
iOS
- Créez votre projet dans Unity pour générer un projet Xcode, puis ouvrez le fichier
.xcworkspacegénéré. - Dans Xcode, accédez à l'onglet Signing & Capabilities (Signature et fonctionnalités), puis sélectionnez votre Development Team (équipe de développement).
- Le plug-in ajoute automatiquement le schéma d'URL personnalisé (
REVERSED_CLIENT_ID) à votre projet Xcode. Créez et exécutez l'application sur un appareil physique.
Étapes suivantes
Lorsqu'un utilisateur se connecte pour la première fois, un compte utilisateur est créé et associé aux identifiants (nom d'utilisateur et mot de passe, numéro de téléphone ou informations du fournisseur d'authentification) avec lesquels il s'est connecté. Ce nouveau compte est stocké dans votre projet Firebase et peut être utilisé pour identifier un utilisateur dans toutes les applications de votre projet, quelle que soit la manière dont il se connecte.
-
Dans vos applications, vous pouvez obtenir les informations de base du profil de l'utilisateur à partir de l'objet
Firebase.Auth.FirebaseUser:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
Dans vos règles de sécurité Firebase Realtime Database et Cloud Storage, vous pouvez obtenir l'ID utilisateur unique de l'utilisateur connecté à partir de la variable
authet l'utiliser pour contrôler les données auxquelles un utilisateur peut accéder.
Vous pouvez autoriser les utilisateurs à se connecter à votre application à l'aide de plusieurs fournisseurs d'authentification en associant les identifiants du fournisseur d'authentification à un compte utilisateur existant.
Pour déconnecter un utilisateur, appelez
SignOut() :
auth.SignOut();