Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Authentifizieren Sie sich mit GitHub mit JavaScript

Sie können Ihre Benutzer mit ihren GitHub-Konten bei Firebase authentifizieren lassen, indem Sie die GitHub-Authentifizierung in Ihre App integrieren. Sie können die GitHub-Authentifizierung entweder mithilfe des Firebase SDK zum Ausführen des Anmeldeflusses oder durch manuelles Ausführen des GitHub OAuth 2.0-Flusses und Übergeben des resultierenden Zugriffstokens an Firebase integrieren.

Bevor Sie beginnen

  1. Fügen Sie Ihrem JavaScript-Projekt Firebase hinzu .
  2. Öffnen Sie in der Firebase-Konsole den Abschnitt Auth .
  3. Auf dem Anmelden Methode Registerkarte, aktivieren Sie den GitHub - Anbieter.
  4. Fügen Sie der Anbieterkonfiguration die Client-ID und das Client-Geheimnis von der Entwicklerkonsole dieses Anbieters hinzu:
    1. Registrieren Sie Ihre App als Entwickleranwendung auf GitHub und erhalten Sie die OAuth 2.0- Client-ID und das Client-Geheimnis Ihrer App.
    2. my-app-12345.firebaseapp.com/__/auth/handler Sie sicher, dass Ihr Firebase OAuth-Umleitungs-URI (z. B. my-app-12345.firebaseapp.com/__/auth/handler ) auf der Einstellungsseite Ihrer App in der Konfiguration Ihrer GitHub-App als URL für den Autorisierungsrückruf my-app-12345.firebaseapp.com/__/auth/handler ist.
  5. Klicken Sie auf Speichern .

Behandeln Sie den Anmeldefluss mit dem Firebase SDK

Wenn Sie eine Web-App erstellen, können Sie Ihre Benutzer am einfachsten mit ihren GitHub-Konten bei Firebase authentifizieren, indem Sie den Anmeldefluss mit dem Firebase JavaScript SDK abwickeln. (Wenn Sie einen Benutzer in Node.js oder einer anderen Nicht-Browser-Umgebung authentifizieren möchten, müssen Sie den Anmeldefluss manuell verarbeiten.)

Gehen Sie folgendermaßen vor, um den Anmeldefluss mit dem Firebase JavaScript SDK zu verarbeiten:

  1. Erstellen Sie eine Instanz des GitHub-Provider-Objekts:
    var provider = new firebase.auth.GithubAuthProvider();
    
  2. Optional : Geben Sie zusätzliche OAuth 2.0-Bereiche an, die Sie vom Authentifizierungsanbieter anfordern möchten. Rufen Sie addScope auf, um einen Bereich addScope . Beispielsweise:
    provider.addScope('repo');
    
    Weitere Informationen finden Sie in der Dokumentation zum Authentifizierungsanbieter .
  3. Optional : Geben Sie zusätzliche benutzerdefinierte OAuth-Anbieterparameter an, die Sie mit der OAuth-Anforderung senden möchten. Um einen benutzerdefinierten Parameter hinzuzufügen, rufen Sie setCustomParameters auf dem initialisierten Provider mit einem Objekt auf, das den in der OAuth-Provider-Dokumentation angegebenen Schlüssel und den entsprechenden Wert enthält. Beispielsweise:
    provider.setCustomParameters({
      'allow_signup': 'false'
    });
    
    Reservierte erforderliche OAuth-Parameter sind nicht zulässig und werden ignoriert. Weitere Informationen finden Sie in der Referenz des Authentifizierungsanbieters .
  4. Authentifizieren Sie sich mit Firebase mithilfe des GitHub-Provider-Objekts. Sie können Ihre Benutzer auffordern, sich mit ihren GitHub-Konten anzumelden, indem Sie entweder ein Popup-Fenster öffnen oder zur Anmeldeseite umleiten. Die Umleitungsmethode wird auf Mobilgeräten bevorzugt.
    • Um sich mit einem Popup-Fenster signInWithPopup , rufen Sie signInWithPopup :
      firebase.auth().signInWithPopup(provider).then(function(result) {
        // This gives you a GitHub Access Token. You can use it to access the GitHub API.
        var token = result.credential.accessToken;
        // The signed-in user info.
        var user = result.user;
        // ...
      }).catch(function(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;
        // ...
      });
      
      Beachten Sie auch, dass Sie das OAuth-Token des GitHub-Anbieters abrufen können, mit dem Sie mithilfe der GitHub-APIs zusätzliche Daten abrufen können.

      Hier können Sie auch Fehler abfangen und behandeln. Eine Liste der Fehlercodes finden Sie in den Auth-Referenzdokumenten .

    • Rufen Sie signInWithRedirect , um sich signInWithRedirect indem Sie zur signInWithRedirect :
      firebase.auth().signInWithRedirect(provider);
      
      Anschließend können Sie auch das OAuth-Token des GitHub-Anbieters getRedirectResult indem getRedirectResult beim getRedirectResult Ihrer Seite getRedirectResult aufrufen:
      firebase.auth().getRedirectResult().then(function(result) {
        if (result.credential) {
          // This gives you a GitHub Access Token. You can use it to access the GitHub API.
          var token = result.credential.accessToken;
          // ...
        }
        // The signed-in user info.
        var user = result.user;
      }).catch(function(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 behandeln. Eine Liste der Fehlercodes finden Sie in den Auth-Referenzdokumenten .

Behandeln Sie den Anmeldefluss manuell

Sie können sich auch mit einem GitHub-Konto bei Firebase authentifizieren, indem Sie den Anmeldefluss durch Aufrufen der GitHub OAuth 2.0-Endpunkte verwalten:

  1. Integrieren Sie die GitHub-Authentifizierung in Ihre App, indem Sie der Dokumentation des Entwicklers folgen. Am Ende des GitHub-Anmeldeflusses erhalten Sie ein OAuth 2.0-Zugriffstoken.
  2. Wenn Sie sich bei einer Node.js-Anwendung anmelden müssen, senden Sie das OAuth-Zugriffstoken an die Node.js-Anwendung.
  3. Nachdem sich ein Benutzer erfolgreich bei GitHub angemeldet hat, tauschen Sie das OAuth 2.0-Zugriffstoken gegen einen Firebase-Berechtigungsnachweis aus:
    var credential = firebase.auth.GithubAuthProvider.credential(token);
    
  4. Authentifizieren Sie sich mit Firebase mithilfe der Firebase-Anmeldeinformationen:
    firebase.auth().signInWithCredential(credential).catch(function(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;
      // ...
    });

Authentifizieren Sie sich mit Firebase in einer Chrome-Erweiterung

Wenn Sie eine Chrome-Erweiterungs-App erstellen, müssen Sie Ihre Chrome-Erweiterungs-ID auf die Whitelist setzen:

  1. Öffnen Sie Ihr Projekt in der Firebase-Konsole .
  2. Im Abschnitt Authentifizierung, öffnen Sie das Anmelde-Verfahren Seite.
  3. Fügen Sie der Liste der autorisierten Domänen einen URI wie den folgenden hinzu:
    chrome-extension:// CHROME_EXTENSION_ID 

Für Chrome-Erweiterungen stehen nur Popup-Vorgänge ( signInWithPopup und linkWithPopup ) zur Verfügung, da Chrome-Erweiterungen keine HTTP-Weiterleitungen verwenden können. Sie sollten diese Methoden über ein Hintergrundskript und nicht über ein Browser-Aktions-Popup aufrufen, da das Authentifizierungs-Popup das Browser-Aktions-Popup abbricht.

Stellen Sie in der Manifestdatei Ihrer Chrome-Erweiterung sicher, dass Sie die URL https://apis.google.com zur Whitelist content_security_policy hinzufügen.

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal angemeldet hat, wird ein neues Benutzerkonto erstellt und mit den Anmeldeinformationen verknüpft, dh dem Benutzernamen und dem Kennwort, der Telefonnummer oder den Informationen zum Authentifizierungsanbieter, mit denen sich der Benutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Benutzer in jeder App in Ihrem Projekt zu identifizieren, unabhängig davon, wie sich der Benutzer anmeldet.

  • In Ihren Apps wird empfohlen, den Authentifizierungsstatus Ihres Benutzers zu ermitteln, indem Sie einen Beobachter für das Auth Objekt festlegen. Sie können dann die grundlegenden Profilinformationen des User aus dem User abrufen. Siehe Benutzer verwalten .

  • In Ihren Firebase- Sicherheitsregeln für Echtzeitdatenbanken und Cloud-Speicher können Sie die eindeutige Benutzer-ID des angemeldeten Benutzers aus der auth und damit steuern, auf welche Daten ein Benutzer zugreifen kann.

Sie können Benutzern erlauben, sich mit mehreren Authentifizierungsanbietern bei Ihrer App anzumelden, indem Sie die Anmeldeinformationen des Authentifizierungsanbieters mit einem vorhandenen Benutzerkonto verknüpfen.

Um einen Benutzer signOut , rufen Sie signOut :

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