Google 致力于为黑人社区推动种族平等。查看具体举措

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 v8

    var provider = new firebase.auth.GoogleAuthProvider();

    Web v9

    import { GoogleAuthProvider } from "firebase/auth";
    
    const provider = new 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 example:

    Web v8

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

    Web v9

    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 example:

    Web v8

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();

    Web v9

    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();
  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 example:

    Web v8

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

    Web v9

    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 v8

      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;
          // ...
        });

      Web v9

      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);
          // ...
        });
      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 v8

      firebase.auth().signInWithRedirect(provider);

      Web v9

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);
      Ensuite, vous pouvez également récupérer le jeton OAuth du fournisseur en appelant Google getRedirectResult lorsque votre page se charge:

      Web v8

      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;
          // ...
        });

      Web v9

      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);
          // ...
        });
      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 et linkWithPopup ) 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 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.

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 pour 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 auth des informations d' identification de fournisseur à un compte d'utilisateur existant.

Pour vous déconnecter un utilisateur, appelez signOut :

Web v8

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

Web v9

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

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