Uwierzytelniaj za pomocą GitHuba z JavaScriptem

Możesz zezwolić użytkownikom na uwierzytelnianie w Firebase za pomocą ich kont GitHub przez integrację uwierzytelniania GitHub z aplikacją. GitHub możesz zintegrować możesz przeprowadzić logowanie za pomocą pakietu SDK Firebase. lub samodzielnie uruchamiając w GitHubie protokół OAuth 2.0 i przekazując uzyskany token dostępu do Firebase.

Zanim zaczniesz

  1. Dodaj Firebase do projektu JavaScript.
  2. W konsoli Firebase otwórz sekcję Uwierzytelnianie.
  3. Na karcie Metoda logowania włącz dostawcę GitHub.
  4. Dodaj Client ID (Identyfikator klienta) i Client Secret (Tajny klucz klienta) z konsoli programisty tego dostawcy do konfiguracja dostawcy:
    1. Rejestrowanie aplikacji jako programistę w GitHubie i uzyskaj identyfikator klienta OAuth 2.0 swojej aplikacji. i Client Secret (Tajny klucz klienta).
    2. Sprawdź, czy Twój identyfikator URI przekierowania OAuth Firebase (np. my-app-12345.firebaseapp.com/__/auth/handler) jest ustawiony jako URL wywołania zwrotnego autoryzacji na stronie ustawień aplikacji Konfiguracja aplikacji GitHub.
  5. Kliknij Zapisz.

Zarejestruj się za pomocą pakietu SDK Firebase

Jeśli tworzysz aplikację internetową, najprostszy sposób uwierzytelniania użytkowników z Firebase, korzystając z kont GitHub, jest obsługa procesu logowania za pomocą pakiet SDK Firebase JavaScript. (Jeśli chcesz uwierzytelnić użytkownika w Node.js lub w innym środowisku, które nie jest przeglądarką, musisz samodzielnie przeprowadzić logowanie).

Aby zalogować się za pomocą pakietu SDK Firebase JavaScript, postępuj zgodnie z tymi wskazówkami kroki:

  1. Utwórz instancję obiektu dostawcy GitHub:

    Web

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

    Web

    var provider = new firebase.auth.GithubAuthProvider();
  2. Opcjonalnie: określ dodatkowe zakresy OAuth 2.0, których potrzebujesz których chcesz żądać od dostawcy uwierzytelniania. Aby dodać zakres, wywołaj addScope Przykład:

    Web

    provider.addScope('repo');

    Web

    provider.addScope('repo');
    Zobacz dostawcę uwierzytelniania dokumentacji.
  3. Opcjonalnie: określ dodatkowe niestandardowe parametry dostawcy OAuth. które chcesz wysyłać z żądaniem OAuth. Aby dodać parametr niestandardowy, wywołaj setCustomParameters u zainicjowanego dostawcy z obiektem zawierającym klucz zgodnie z dokumentacją dostawcy OAuth i odpowiednią wartością. Przykład:

    Web

    provider.setCustomParameters({
      'allow_signup': 'false'
    });

    Web

    provider.setCustomParameters({
      'allow_signup': 'false'
    });
    Zarezerwowane wymagane parametry OAuth są niedozwolone i będą ignorowane. Zobacz odniesienie do dostawcy uwierzytelniania, aby dowiedzieć się więcej.
  4. Uwierzytelnij w Firebase za pomocą obiektu dostawcy GitHuba. Dostępne opcje poproś użytkowników o zalogowanie się na konta GitHub albo otwórz pojawi się wyskakujące okienko lub przekierujemy Cię na stronę logowania. Metoda przekierowania to na urządzeniach mobilnych.
    • Aby zalogować się za pomocą wyskakującego okienka, zadzwoń pod numer signInWithPopup:

      Web

      import { getAuth, signInWithPopup, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a GitHub Access Token. You can use it to access the GitHub API.
          const credential = GithubAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
      
          // 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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a GitHub Access Token. You can use it to access the GitHub API.
          var token = credential.accessToken;
      
          // 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;
          // ...
        });
      Zwróć też uwagę, że możesz pobrać token OAuth dostawcy GitHuba, którego można użyć do pobrania dodatkowych danych za pomocą interfejsów GitHub API.

      Możesz w nim też wykrywać i poprawiać błędy. Listę kodów błędów znajdziesz w dokumentacji referencyjnej uwierzytelniania.

    • Aby zalogować się, przekierowując na stronę logowania, zadzwoń pod numer signInWithRedirect: Podczas korzystania z metody „signInWithRedirect” postępuj zgodnie ze sprawdzonymi metodami.

      Web

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

      Web

      firebase.auth().signInWithRedirect(provider);
      Następnie możesz też pobrać token OAuth dostawcy GitHuba, wywołując getRedirectResult po załadowaniu strony:

      Web

      import { getAuth, getRedirectResult, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          const credential = GithubAuthProvider.credentialFromResult(result);
          if (credential) {
            // This gives you a GitHub Access Token. You can use it to access the GitHub API.
            const token = credential.accessToken;
            // ...
          }
      
          // 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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a GitHub Access Token. You can use it to access the GitHub API.
            var token = credential.accessToken;
            // ...
          }
      
          // 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;
          // ...
        });
      Możesz w nim też wykrywać i poprawiać błędy. Listę kodów błędów znajdziesz w dokumentacji referencyjnej uwierzytelniania.

Zarejestruj się ręcznie

Możesz również uwierzytelnić się w Firebase za pomocą konta GitHub, obsługując przez wywołanie punktów końcowych OAuth 2.0 na GitHubie:

  1. Zintegruj uwierzytelnianie GitHub ze swoją aplikacją, postępując zgodnie z zapoznaj się z dokumentacją dla deweloperów. Na końcu logowania się przez GitHuba otrzyma token dostępu OAuth 2.0.
  2. Jeśli musisz zalogować się w aplikacji Node.js, wyślij prośbę o dostęp OAuth dla aplikacji Node.js.
  3. Gdy użytkownik zaloguje się na GitHubie, wymienij protokół OAuth 2.0 token dostępu do danych logowania Firebase:

    Web

    import { GithubAuthProvider } from "firebase/auth";
    
    const credential = GithubAuthProvider.credential(token);

    Web

    var credential = firebase.auth.GithubAuthProvider.credential(token);
  4. Uwierzytelnij w Firebase za pomocą danych logowania Firebase:

    Web

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

    Web

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

Uwierzytelnianie za pomocą Firebase w rozszerzeniu do Chrome

Jeśli tworzysz aplikację rozszerzenia do Chrome, zapoznaj się z Przewodnik po dokumentach poza ekranem

Dalsze kroki

Gdy użytkownik zaloguje się po raz pierwszy, tworzone jest nowe konto użytkownika. powiązane z danymi logowania, czyli z nazwą użytkownika, hasłem i numerem telefonu, numer telefonu lub informacje o dostawcy uwierzytelniania – użytkownik zalogowany. Ten nowy jest przechowywane w ramach projektu Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od tego, jak się loguje.

  • Aby poznać stan uwierzytelniania użytkownika w swoich aplikacjach, ustaw obserwatora na obiekcie Auth. Dzięki temu możesz uzyskać dane użytkownika podstawowych informacji o profilu z obiektu User. Zobacz Zarządzanie użytkownikami

  • Na liście Firebase Realtime Database i Cloud Storage regułami zabezpieczeń, pobierz ze zmiennej auth unikalny identyfikator zalogowanego użytkownika, i używać ich do kontrolowania, do jakich danych użytkownik ma dostęp.

Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu wielokrotnego uwierzytelniania. dostawców, łącząc dane logowania dostawcy uwierzytelniania z istniejącego konta użytkownika.

Aby wylogować użytkownika, wywołaj signOut:

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