Catch up on everthing we announced at this year's Firebase Summit. Learn more

Authentification à l'aide de Twitter en JavaScript

Vous pouvez permettre à vos utilisateurs de s'authentifier auprès de Firebase à l'aide de leurs comptes Twitter en intégrant l'authentification Twitter dans votre application. Vous pouvez intégrer l'authentification Twitter soit en utilisant le SDK Firebase pour effectuer le flux de connexion, soit en exécutant le flux Twitter OAuth manuellement et en transmettant le jeton d'accès et le secret résultants à Firebase.

Avant que tu commences

  1. Ajouter Firebase à votre projet JavaScript .
  2. Dans la console Firebase , ouvrez la section Auth.
  3. Sur l'onglet Connexion méthode, activez le fournisseur Twitter.
  4. Ajoutez la clé API et secret API à partir de la console développeur de ce fournisseur à la configuration du fournisseur:
    1. Enregistrez votre application comme une application de développeur sur Twitter et obtenir votre application clé API de OAuth et le secret API.
    2. Assurez - vous que votre Firebase OAuth URI de redirection (par exemple my-app-12345.firebaseapp.com/__/auth/handler ) est définie comme l' URL de votre rappel Autorisation dans la page des paramètres de votre application sur votre la configuration de l' application Twitter .
  5. 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 Twitter 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 Twitter :

    Web version 9

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

    Web version 8

    var provider = new firebase.auth.TwitterAuthProvider();
  2. 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();
  3. En option: Spécifiez les 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({
      'lang': 'es'
    });

    Web version 8

    provider.setCustomParameters({
      'lang': 'es'
    });
    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.
  4. Authentifiez-vous auprès de Firebase à l'aide de l'objet fournisseur Twitter. Vous pouvez inviter vos utilisateurs à se connecter avec leurs comptes Twitter 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, TwitterAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          const credential = TwitterAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          const secret = credential.secret;
      
          // 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 = TwitterAuthProvider.credentialFromError(error);
          // ...
        });

      Web version 8

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          var token = credential.accessToken;
          var secret = credential.secret;
      
          // 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 Twitter qui peut être utilisé pour récupérer des données supplémentaires à l'aide des API Twitter.

      C'est également là que vous pouvez détecter et gérer les erreurs. Pour obtenir la 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 Twitter en appelant getRedirectResult lorsque votre page se charge:

      Web version 9

      import { getAuth, getRedirectResult, TwitterAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          const credential = TwitterAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          const secret = credential.secret;
          // ...
      
          // 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 = TwitterAuthProvider.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 the Twitter OAuth 1.0 Access Token and Secret.
            // You can use these server side with your app's credentials to access the Twitter API.
            var token = credential.accessToken;
            var secret = credential.secret;
            // ...
          }
      
          // 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 .

Gérer le flux de connexion manuellement

Vous pouvez également vous authentifier auprès de Firebase à l'aide d'un compte Twitter en gérant le flux de connexion en appelant les points de terminaison Twitter OAuth :

  1. Intégrer l' authentification Twitter dans votre application en suivant la documentation du développeur . À la fin du flux de connexion Twitter, vous recevrez un jeton d'accès OAuth et un secret OAuth.
  2. Si vous devez vous connecter à une application Node.js, envoyez le jeton d'accès OAuth et le secret OAuth à l'application Node.js.
  3. Après un utilisateur avec succès des signes avec Twitter, échanger l'accès OAuth jeton et secret OAuth pour un titre Firebase:
    var credential = firebase.auth.TwitterAuthProvider.credential(token, secret);
    
  4. Authentifiez-vous auprès de Firebase à l'aide des identifiants Firebase :

    Web version 9

    import { getAuth, signInWithCredential, FacebookAuthProvider } from "firebase/auth";
    
    // Sign in with the credential from the Facebook user.
    const auth = getAuth();
    signInWithCredential(auth, credential)
      .then((result) => {
        // Signed in 
        const credential = FacebookAuthProvider.credentialFromResult(result);
      })
      .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 = FacebookAuthProvider.credentialFromError(error);
        // ...
      });

    Web version 8

    // Sign in with the credential from the Facebook user.
    firebase.auth().signInWithCredential(credential)
      .then((result) => {
        // Signed in       
        var credential = result.credential;
        // ...
      })
      .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;
        // ...
      });

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