S'authentifier avec Yahoo et Unity

Vous pouvez permettre à vos utilisateurs de s'authentifier auprès de Firebase à l'aide de fournisseurs OAuth tels que Yahoo en intégrant une connexion OAuth générique basée sur le Web à votre application à l'aide du SDK Firebase pour effectuer la procédure de connexion de bout en bout. Étant donné que ce flux nécessite l'utilisation des SDK Firebase basés sur le téléphone, il n'est compatible qu'avec les plates-formes Android et Apple.

Avant de commencer

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 ne disposez pas d'un projet Unity, vous pouvez télécharger un exemple d'application.

  • Ajoutez le SDK Unity Firebase (plus précisément, FirebaseAuth.unitypackage) à votre projet Unity.

Notez que l'ajout de Firebase à votre projet Unity implique des tâches dans le Console Firebase et dans votre projet Unity ouvert Par exemple, vous téléchargez les fichiers de configuration Firebase depuis la console, puis vous déplacez dans votre projet Unity).

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;

Gérer le flux de connexion avec le SDK Firebase

Pour gérer le flux de connexion avec le SDK Firebase, procédez comme suit:

  1. Construire une instance d'un FederatedOAuthProviderData configuré avec l'ID de fournisseur approprié pour Yahoo.

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.YahooAuthProvider.ProviderId;
    
  2. Facultatif: spécifiez les autres paramètres OAuth personnalisés que vous souhaitez avec la requête OAuth.

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Yahoo.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Localize to French.
    providerData.CustomParameters.Add("language", "fr");
    

    Pour connaître les paramètres compatibles avec Yahoo, consultez les Documentation OAuth OAuth Notez que vous ne pouvez pas transmettre de paramètres requis par Firebase avec custom_parameters(). Ces paramètres sont client_id, redirect_uri, response_type, scope et state.

  3. Facultatif : spécifiez des champs d'application OAuth 2.0 supplémentaires au-delà de profile et email que vous souhaitez demander au fournisseur d'authentification. Si votre application nécessite l'accès aux données utilisateur privées des API Yahoo, vous devez demander des autorisations aux API Yahoo sous Autorisations API dans la console pour les développeurs Yahoo. Les champs d'application OAuth demandés doivent correspondre exactement à ceux préconfigurés dans les autorisations d'API de l'application. Par exemple, si un accès en lecture/écriture l'accès est demandé aux contacts des utilisateurs et préconfiguré dans l'API de l'application autorisations, sdct-w doit être transmis au lieu du champ d'application OAuth en lecture seule sdct-r Sinon,le flux échouera et une erreur sera affichée au un utilisateur final.

    providerData.Scopes = new List<string>();
    
    // Request access to Yahoo Mail API.
    providerData.Scopes.Add("mail-r");
    // This must be preconfigured in the app's API permissions.
    providerData.Scopes.Add("sdct-w");
    

    Pour en savoir plus, consultez la documentation sur les champs d'application Yahoo.

  4. Une fois les données de votre fournisseur configurées, utilisez-les pour créer FederatedOAuthProvider.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    Firebase.Auth.FederatedOAuthProvider provider =
        new Firebase.Auth.FederatedOAuthProvider();
    provider.SetProviderData(providerData);
    
  5. Authentifiez-vous auprès de Firebase à l'aide de l'objet du fournisseur d'authentification. Notez que, contrairement aux autres opérations FirebaseAuth, cette opération prend le contrôle de votre UI en affichant une vue Web dans laquelle l'utilisateur peut saisir ses identifiants.

    Pour démarrer le flux de connexion, appelez SignInAndRetrieveDataWithCredentialAsync :

<<../_include/_sign_in_with_provider_unity.md>>>

  1. Si les exemples ci-dessus se concentrent sur les procédures de connexion, possibilité d'associer un fournisseur Yahoo à un utilisateur existant à l'aide de LinkWithProviderAsync Par exemple, vous pouvez associer plusieurs au même utilisateur, ce qui leur permet de se connecter avec l'un ou l'autre.

    user.LinkWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("LinkWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("LinkWithProviderAsync encountered an error: "
              + task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User linked successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    
  2. Le même schéma peut être utilisé avec ReauthenticateWithProviderAsync, qui peut être utilisé pour récupérer de nouveaux identifiants pour les opérations sensibles qui nécessitent une connexion récente.

    user.ReauthenticateWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("ReauthenticateWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError(
            "ReauthenticateWithProviderAsync encountered an error: " +
                task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User reauthenticated successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

Contrairement aux autres fournisseurs OAuth compatibles avec Firebase, et Twitter, où la connexion se fait directement à l'aide d'un jeton d'accès OAuth à l'aide d'identifiants basés sur des requêtes, Firebase Auth ne permet pas des fournisseurs de services tels que Yahoo, en raison de l'incapacité du Serveur d'authentification pour vérifier l'audience des jetons d'accès OAuth Yahoo. Il s'agit d'une exigence de sécurité critique qui peut exposer les applications sites Web de rejeu d'attaques où un jeton d'accès OAuth Yahoo! est obtenu pour un projet (attaquant) peut être utilisé pour se connecter à un autre projet (victime). Firebase Auth offre plutôt la possibilité de gérer l'ensemble du flux OAuth et l'échange du code d'autorisation à l'aide de l'ID client OAuth et du secret configurés dans la console Firebase. Comme le code d'autorisation ne peut être utilisé qu'avec un ID client/secret spécifique, un code d'autorisation obtenu pour un projet ne peut pas être utilisé avec un autre.

Si vous devez utiliser ces fournisseurs dans des environnements non compatibles, vous devez utiliser une bibliothèque OAuth tierce et l'authentification personnalisée Firebase. Le premier est nécessaire pour s'authentifier auprès du fournisseur et le second pour échanger les identifiants du fournisseur contre un jeton personnalisé.

Étapes suivantes

Lorsqu'un utilisateur se connecte pour la première fois, un compte utilisateur est créé et associé aux identifiants (nom et mot de passe de l'utilisateur, numéro de téléphone ou informations du fournisseur d'authentification) avec lesquels l'utilisateur 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 des <ph type="x-smartling-placeholder"></ph> 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 votre Firebase Realtime Database et votre Cloud Storage Règles de sécurité, vous pouvez obtenez l'ID utilisateur unique de l'utilisateur connecté à partir de la variable auth et 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();

Firebase gives you the tools and infrastructure you need to build better mobile and web apps, improve app quality, and grow your business.

Mise à jour le Feb 28, 2025

Firebase gives you the tools and infrastructure you need to build better mobile and web apps, improve app quality, and grow your business.

Mise à jour le Feb 28, 2025