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
- Dodaj Firebase do projektu JavaScript.
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na karcie Metoda logowania włącz dostawcę GitHub.
- Dodaj Client ID (Identyfikator klienta) i Client Secret (Tajny klucz klienta) z konsoli programisty tego dostawcy do
konfiguracja dostawcy:
- Rejestrowanie aplikacji jako programistę w GitHubie i uzyskaj identyfikator klienta OAuth 2.0 swojej aplikacji. i Client Secret (Tajny klucz klienta).
- Sprawdź, czy 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.
- 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:
- Utwórz instancję obiektu dostawcy GitHub:
Web
import { GithubAuthProvider } from "firebase/auth"; const provider = new GithubAuthProvider();
Web
var provider = new firebase.auth.GithubAuthProvider();
- 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');
- 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' });
- 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; // ... });
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);
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; // ... });
- Aby zalogować się za pomocą wyskakującego okienka, zadzwoń pod numer
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:
- 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.
- Jeśli musisz zalogować się w aplikacji Node.js, wyślij prośbę o dostęp OAuth dla aplikacji Node.js.
- 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);
- 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 obiektuUser
. 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. });