Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Authentification à l'aide de Google Sign-In avec JavaScript

Vous pouvez permettre à vos utilisateurs de s'authentifier auprès de Firebase à l'aide de leurs comptes Google en intégrant Google Sign-In dans votre application. Vous pouvez intégrer Google Sign-In soit en utilisant le SDK Firebase pour effectuer le flux de connexion, soit en exécutant le flux Google Sign-In manuellement et en transmettant le jeton d'identification résultant à Firebase.

Avant que tu commences

  1. Ajouter Firebase à votre projet JavaScript .
  2. Activez Google Sign-In dans la console Firebase :
    1. Dans la console Firebase , ouvrez la section Auth.
    2. Sur l'onglet Connexion méthode, activez la connexion Google méthode et cliquez sur Enregistrer.

Gérer le flux de connexion avec le SDK Firebase

Si vous créez une application Web, le moyen le plus simple d'authentifier vos utilisateurs avec Firebase à l'aide de leurs comptes Google consiste à gérer le flux de connexion avec le SDK JavaScript Firebase. (Si vous souhaitez authentifier un utilisateur dans Node.js ou dans un autre environnement sans navigateur, vous devez gérer le flux de connexion manuellement.)

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

  1. Créez une instance de l'objet fournisseur Google :

    Web version 9

    import { GoogleAuthProvider } from "firebase/auth";
    
    const provider = new GoogleAuthProvider();

    Web version 8

    var provider = new firebase.auth.GoogleAuthProvider();
  2. Facultatif: Spécifiez champs OAuth 2.0 supplémentaires que vous voulez demande du fournisseur d'authentification. Pour ajouter un champ, appelez addScope . Par exemple:

    Web version 9

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');

    Web version 8

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    Consultez la documentation du fournisseur d'authentification .
  3. Facultatif: Pour localiser le flux OAuth dans la langue préférée de l'utilisateur du fournisseur sans passer explicitement les paramètres pertinents OAuth personnalisés, mettez à jour le code de langue sur l'instance Auth avant de commencer le flux OAuth. Par exemple:

    Web version 9

    import { getAuth } from "firebase/auth";
    
    const auth = getAuth();
    auth.languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();

    Web version 8

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  4. Facultatif: spécifiez des paramètres supplémentaires du fournisseur de OAuth personnalisé que vous souhaitez envoyer à la demande OAuth. Pour ajouter un paramètre personnalisé, appelez setCustomParameters sur le fournisseur initialisés avec un objet contenant la clé tel que spécifié par la documentation du fournisseur de OAuth et la valeur correspondante. Par exemple:

    Web version 9

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });

    Web version 8

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });
    Les paramètres OAuth requis réservés ne sont pas autorisés et seront ignorés. Voir la référence fournisseur d'authentification pour plus de détails.
  5. Authentifiez-vous auprès de Firebase à l'aide de l'objet fournisseur Google. Vous pouvez inviter vos utilisateurs à se connecter avec leur compte Google soit en ouvrant une fenêtre contextuelle, soit en les redirigeant vers la page de connexion. La méthode de redirection est préférée sur les appareils mobiles.
    • Pour vous connecter avec une fenêtre pop-up, appel signInWithPopup :

      Web version 9

      import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a Google Access Token. You can use it to access the Google API.
          const credential = GoogleAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          // The signed-in user info.
          const user = result.user;
          // ...
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.email;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });

      Web version 8

      firebase.auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a Google Access Token. You can use it to access the Google API.
          var token = credential.accessToken;
          // The signed-in user info.
          var user = result.user;
          // ...
        }).catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
      Notez également que vous pouvez récupérer le jeton OAuth du fournisseur Google qui peut être utilisé pour récupérer des données supplémentaires à l'aide des API Google.

      C'est également là que vous pouvez détecter et gérer les erreurs. Pour une liste des codes d'erreur ont un regard sur les Auth Référence Docs .

    • Pour vous connecter en redirigeant la page de connexion, appelez signInWithRedirect :

      Web version 9

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      Web version 8

      firebase.auth().signInWithRedirect(provider);
      Ensuite, vous pouvez également récupérer le jeton OAuth du fournisseur en appelant Google getRedirectResult lorsque votre page se charge:

      Web version 9

      import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a Google Access Token. You can use it to access Google APIs.
          const credential = GoogleAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
      
          // The signed-in user info.
          const user = result.user;
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.email;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });

      Web version 8

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a Google Access Token. You can use it to access the Google API.
            var token = credential.accessToken;
            // ...
          }
          // The signed-in user info.
          var user = result.user;
        }).catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
      C'est également là que vous pouvez détecter et gérer les erreurs. Pour une liste des codes d'erreur ont un regard sur les Auth Référence Docs .

S'authentifier avec Firebase dans une extension Chrome

Si vous créez une application d'extension Chrome, vous devez ajouter votre ID d'extension Chrome :

  1. Ouvrez votre projet dans la console Firebase .
  2. Dans la section Authentification, ouvrez la page de connexion de la méthode.
  3. Ajouter un URI comme suit à la liste des domaines autorisés:
    chrome-extension://CHROME_EXTENSION_ID

Seules les opérations popup ( signInWithPopup , linkWithPopup et reauthenticateWithPopup ) sont disponibles pour des extensions Chrome, comme des extensions Chrome ne peuvent pas utiliser les redirections HTTP. Vous devez appeler ces méthodes à partir d'un script de page d'arrière-plan plutôt que d'une fenêtre contextuelle d'action du navigateur, car la fenêtre contextuelle d'authentification annulera la fenêtre contextuelle d'action du navigateur. Les méthodes pop - up ne peuvent être utilisés dans les extensions en utilisant Manifest V2 . La nouvelle Manifest V3 permet uniquement des scripts de base sous la forme des travailleurs de services qui ne peuvent pas effectuer les opérations de pop - up du tout.

Dans votre marque de fichier manifeste d'extension Chrome vous que vous ajoutez l' https://apis.google.com URL à la content_security_policy allowlist.

Prochaines étapes

Une fois qu'un utilisateur se connecte pour la première fois, un nouveau compte d'utilisateur est créé et lié aux informations d'identification, c'est-à-dire le nom d'utilisateur et le mot de passe, le numéro de téléphone ou les informations du fournisseur d'autorisation, avec lesquelles l'utilisateur s'est connecté. Ce nouveau compte est stocké dans le cadre de votre projet Firebase et peut être utilisé pour identifier un utilisateur dans chaque application de votre projet, quel que soit le mode de connexion de l'utilisateur.

  • Dans vos applications, la méthode recommandée de connaître l'état de votre auth utilisateur de définir un observateur sur le Auth objet. Vous pouvez obtenir des informations sur le profil de base de l'utilisateur de l' User objet. Voir Gérer les utilisateurs .

  • Dans votre base de données et en temps réel Firebase Cloud Storage Les règles de auth sécurité , vous pouvez obtenir la signature dans ID d'utilisateur unique de l' utilisateur de la auth variable et l' utiliser pour contrôler les données d' un accès utilisateur peut.

Vous pouvez permettre aux utilisateurs de se connecter à votre application à l' aide des fournisseurs d'authentification multiples en reliant les informations d' identification de fournisseur auth à un compte d'utilisateur existant.

Pour vous déconnecter un utilisateur, appelez signOut :

Web version 9

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web version 8

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});