Mit Twitter in JavaScript authentifizieren

Sie können Ihren Nutzern die Authentifizierung mit Firebase über ihre Twitter-Konten ermöglichen, indem Sie die Twitter-Authentifizierung in Ihre App einbinden. Dazu haben Sie zwei Möglichkeiten: Sie können entweder das Firebase SDK verwenden, um den Anmeldevorgang auszuführen, oder den Twitter OAuth-Vorgang manuell ausführen und das resultierende Zugriffstoken und den zugehörigen Schlüssel an Firebase übergeben.

Hinweis

  1. Fügen Sie Ihrem JavaScript-Projekt Firebase hinzu.
  2. Rufen Sie in der Firebase Konsole Sicherheit > Authentifizierung auf.
  3. Aktivieren Sie auf dem Tab Anmeldemethode den Anmeldeanbieter Twitter sign-in.
  4. Fügen Sie der Anbieterkonfiguration den API-Schlüssel und den API-Schlüssel aus der Entwicklerkonsole des Anbieters hinzu:
    1. Registrieren Sie Ihre App als Entwickleranwendung auf Twitter und rufen Sie den OAuth API-Schlüssel und API-Schlüssel Ihrer App ab.
    2. Achten Sie darauf, dass der OAuth-Weiterleitungs-URI von Firebase (z. B. my-app-12345.firebaseapp.com/__/auth/handler) auf der Einstellungsseite Ihrer App in der Konfiguration Ihrer Twitter-App als Autorisierungs-Callback-URL festgelegt ist.
  5. Klicken Sie auf Speichern.

Anmeldevorgang mit dem Firebase SDK verarbeiten

Wenn Sie eine Webanwendung entwickeln, ist die einfachste Möglichkeit, Ihre Nutzer mit Firebase über ihre Twitter-Konten zu authentifizieren, den Anmeldevorgang mit dem Firebase JavaScript SDK zu verarbeiten. Wenn Sie einen Nutzer in Node.js oder einer anderen Nicht-Browser-Umgebung authentifizieren möchten, müssen Sie den Anmeldevorgang manuell verarbeiten.

So verarbeiten Sie den Anmeldevorgang mit dem Firebase JavaScript SDK:

  1. Erstellen Sie eine Instanz des Twitter-Anbieter-Objekts:

    Web

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

    Web

    var provider = new firebase.auth.TwitterAuthProvider();
  2. Optional: Wenn Sie den OAuth-Vorgang des Anbieters in die bevorzugte Sprache des Nutzers übersetzen möchten, ohne die entsprechenden benutzerdefinierten OAuth-Parameter explizit zu übergeben, aktualisieren Sie den Sprachcode in der Auth-Instanz, bevor Sie den OAuth-Vorgang starten. Beispiel:

    Web

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

    Web

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  3. Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Anbieterparameter an, die Sie mit der OAuth-Anfrage senden möchten. Wenn Sie einen benutzerdefinierten Parameter hinzufügen möchten, rufen Sie setCustomParameters für den initialisierten Anbieter mit einem Objekt auf, das den Schlüssel enthält, wie in der OAuth-Anbieterdokumentation angegeben, und den entsprechenden Wert. Beispiel:

    Web

    provider.setCustomParameters({
      'lang': 'es'
    });

    Web

    provider.setCustomParameters({
      'lang': 'es'
    });
    Reservierte erforderliche OAuth-Parameter sind nicht zulässig und werden ignoriert. Weitere Informationen finden Sie in der Referenz zum Authentifizierungsanbieter.
  4. Authentifizieren Sie sich mit Firebase über das Twitter-Anbieter-Objekt. Sie können Ihre Nutzer auffordern, sich mit ihren Twitter-Konten anzumelden, indem Sie entweder ein Pop-up-Fenster öffnen oder auf die Anmeldeseite weiterleiten. Die Weiterleitungsmethode wird bevorzugt auf Mobilgeräten.
    • Rufen Sie signInWithPopup auf, um sich mit einem Pop-up-Fenster anzumelden:

      Web

      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;
          // IdP data available using getAdditionalUserInfo(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.customData.email;
          // The AuthCredential type that was used.
          const credential = TwitterAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      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;
          // IdP data available in result.additionalUserInfo.profile.
            // ...
        }).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;
          // ...
        });
      Außerdem können Sie das OAuth-Token des Twitter-Anbieters abrufen, mit dem Sie zusätzliche Daten über die Twitter APIs abrufen können.

      Hier können Sie auch Fehler abfangen und verarbeiten. Eine Liste der Fehlercodes finden Sie in der Auth-Referenzdokumentation.

    • Rufen Sie signInWithRedirect auf, um sich anzumelden, indem Sie auf die Anmeldeseite weiterleiten: Beachten Sie die Best Practices für die Verwendung von `signInWithRedirect`.

      Web

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

      Web

      firebase.auth().signInWithRedirect(provider);
      Anschließend können Sie das OAuth-Token des Twitter-Anbieters auch abrufen, indem Sie getRedirectResult aufrufen, wenn Ihre Seite geladen wird:

      Web

      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;
          // IdP data available using getAdditionalUserInfo(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.customData.email;
          // The AuthCredential type that was used.
          const credential = TwitterAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      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;
          // IdP data available in result.additionalUserInfo.profile.
            // ...
        }).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;
          // ...
        });
      Hier können Sie auch Fehler abfangen und verarbeiten. Eine Liste der Fehlercodes finden Sie in der Auth-Referenzdokumentation.

Anmeldevorgang manuell verarbeiten

Sie können sich auch mit Firebase über ein Twitter-Konto authentifizieren, indem Sie den Anmeldevorgang verarbeiten, indem Sie die Twitter OAuth-Endpunkte aufrufen:

  1. Binden Sie die Twitter-Authentifizierung in Ihre Anwendung ein. Folgen Sie dazu der Entwicklerdokumentation. Am Ende des Twitter-Anmeldevorgangs erhalten Sie ein OAuth-Zugriffstoken und ein OAuth-Geheimnis.
  2. Wenn Sie sich in einer Node.js-Anwendung anmelden müssen, senden Sie das OAuth-Zugriffstoken und das OAuth-Geheimnis an die Node.js-Anwendung.
  3. Nachdem sich ein Nutzer erfolgreich mit Twitter angemeldet hat, tauschen Sie das OAuth-Zugriffstoken und den OAuth-Schlüssel gegen Firebase-Anmeldedaten aus:
    var credential = firebase.auth.TwitterAuthProvider.credential(token, secret);
  4. Authentifizieren Sie sich mit Firebase über die Firebase-Anmeldedaten:

    Web

    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.customData.email;
        // The AuthCredential type that was used.
        const credential = FacebookAuthProvider.credentialFromError(error);
        // ...
      });

    Web

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

Authentifizierung mit Firebase in einer Chrome-Erweiterung

Wenn Sie eine Chrome-Erweiterungs-App entwickeln, lesen Sie den Leitfaden zu Offscreen-Dokumenten.

Nächste Schritte

Wenn sich ein Nutzer zum ersten Mal anmeldet, wird ein neues Nutzerkonto erstellt und mit den Anmeldedaten verknüpft, mit denen sich der Nutzer angemeldet hat, d. h. mit dem Nutzernamen und Passwort, der Telefonnummer oder den Informationen des Authentifizierungsanbieters. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in allen Apps Ihres Projekts zu identifizieren, unabhängig davon, wie sich der Nutzer anmeldet.

  • In Ihren Apps ist es empfehlenswert, den Authentifizierungsstatus Ihres Nutzers zu ermitteln, indem Sie einen Beobachter für das Auth-Objekt festlegen. Anschließend können Sie die grundlegenden Profilinformationen des Nutzers aus dem User-Objekt abrufen. Weitere Informationen finden Sie unter Nutzer verwalten.

  • In den Firebase Realtime Database und Cloud Storage Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth abrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.

Sie können Nutzern ermöglichen, sich mit mehreren Authentifizierungs anbietern in Ihrer App anzumelden, indem Sie Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto verknüpfen.

Rufen Sie signOut auf, um einen Nutzer abzumelden:

Web

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

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

Web

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