Aby umożliwić użytkownikom uwierzytelnianie w Firebase za pomocą kont na Twitterze, integrując uwierzytelnianie Twittera ze swoją aplikacją, możesz wdrożyć uwierzytelnianie Twittera, korzystając z pakietu SDK Firebase do przeprowadzenia logowania, albo samodzielnie wykonując przepływ OAuth na Twitterze i przekazując powstały token dostępu oraz tajny klucz do Firebase.
Zanim zaczniesz
- Dodaj Firebase do projektu JavaScript.
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na karcie Metoda logowania włącz dostawcę Twittera.
- Dodaj klucz interfejsu API i tajny klucz interfejsu API z konsoli programisty tego dostawcy do konfiguracji dostawcy:
- Zarejestruj swoją aplikację jako aplikację deweloperską na Twitterze i uzyskaj klucz interfejsu API OAuth oraz tajny klucz interfejsu API.
- Sprawdź, czy identyfikator URI przekierowania OAuth (np.
my-app-12345.firebaseapp.com/__/auth/handler
) jest ustawiony jako URL wywołania zwrotnego autoryzacji w ustawieniach aplikacji w konfiguracji aplikacji Twitter.
- Kliknij Zapisz.
Zarejestruj się za pomocą pakietu SDK Firebase
Jeśli tworzysz aplikację internetową, najprostszym sposobem uwierzytelniania użytkowników w Firebase za pomocą ich kont na Twitterze jest obsługa logowania za pomocą pakietu SDK Firebase JavaScript. (Jeśli chcesz uwierzytelnić użytkownika w Node.js lub w środowisku innym niż przeglądarka, musisz to zrobić ręcznie).
Aby zalogować się za pomocą pakietu SDK Firebase JavaScript, wykonaj te czynności:
- Utwórz instancję obiektu dostawcy Twittera:
Web Modular API
import { TwitterAuthProvider } from "firebase/auth"; const provider = new TwitterAuthProvider();
Interfejs API internetowej przestrzeni nazw
var provider = new firebase.auth.TwitterAuthProvider();
- Opcjonalnie: aby zlokalizować przepływ OAuth dostawcy na preferowany język użytkownika bez jawnego przekazywania odpowiednich niestandardowych parametrów OAuth, przed rozpoczęciem procesu OAuth zaktualizuj kod języka w instancji Auth. Przykład:
Web Modular API
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Interfejs API internetowej przestrzeni nazw
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- 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 za pomocą obiektu zawierającego klucz zgodnie z dokumentacją dostawcy OAuth i odpowiednią wartością. Przykład:Web Modular API
provider.setCustomParameters({ 'lang': 'es' });
Interfejs API internetowej przestrzeni nazw
provider.setCustomParameters({ 'lang': 'es' });
- Uwierzytelnij się w Firebase za pomocą obiektu dostawcy Twittera. Możesz poprosić użytkowników o zalogowanie się za pomocą kont na Twitterze. Aby to zrobić, otwórz wyskakujące okienko lub przekierowanie na stronę logowania. Metoda przekierowania jest preferowana na urządzeniach mobilnych.
- Aby zalogować się za pomocą wyskakującego okienka, zadzwoń pod numer
signInWithPopup
:Web Modular API
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); // ... });
Interfejs API internetowej przestrzeni nazw
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; // ... });
Możesz w nim też wykrywać i poprawiać błędy. Listę kodów błędów znajdziesz w dokumentacji referencyjnej uwierzytelniania.
- Aby zalogować się przez przekierowanie na stronę logowania, wywołaj
signInWithRedirect
: postępuj zgodnie ze sprawdzonymi metodami w przypadku korzystania z metody „signInWithRedirect”.Web Modular API
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Interfejs API internetowej przestrzeni nazw
firebase.auth().signInWithRedirect(provider);
getRedirectResult
podczas wczytywania strony:Web Modular API
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); // ... });
Interfejs API internetowej przestrzeni nazw
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; // ... });
- Aby zalogować się za pomocą wyskakującego okienka, zadzwoń pod numer
Zarejestruj się ręcznie
Możesz też uwierzytelnić się w Firebase za pomocą konta na Twitterze, wykonując proces logowania, wywołując punkty końcowe protokołu OAuth na Twitterze:
- Zintegruj uwierzytelnianie przez Twittera ze swoją aplikacją, postępując zgodnie z dokumentacją dla deweloperów. Pod koniec procesu logowania się na Twitterze otrzymasz token dostępu OAuth i tajny klucz OAuth.
- Jeśli musisz zalogować się w aplikacji Node.js, wyślij do niej token dostępu OAuth i tajny klucz OAuth.
- Gdy użytkownik zaloguje się przez Twittera, zamień token dostępu OAuth i tajny klucz OAuth dla danych logowania Firebase:
var credential = firebase.auth.TwitterAuthProvider.credential(token, secret);
- Uwierzytelnij w Firebase za pomocą danych logowania Firebase:
Web Modular API
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); // ... });
Interfejs API internetowej przestrzeni nazw
// 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; // ... });
Uwierzytelnianie za pomocą Firebase w rozszerzeniu do Chrome
Jeśli tworzysz aplikację rozszerzenia do Chrome, zapoznaj się z przewodnikiem po dokumentach poza ekranem.
Dalsze kroki
Gdy użytkownik loguje się po raz pierwszy, tworzone jest nowe konto użytkownika, które jest łączone z danymi logowania (nazwa użytkownika i hasło, numer telefonu lub informacje o dostawcy uwierzytelniania). Nowe konto jest przechowywane w ramach Twojego projektu Firebase i może być używane do identyfikowania użytkowników we wszystkich aplikacjach w Twoim projekcie niezależnie od tego, jak się on loguje.
-
Zalecanym sposobem na poznanie stanu uwierzytelniania użytkownika w aplikacjach jest ustawienie obserwatora w obiekcie
Auth
. Dzięki temu można uzyskać podstawowe informacje o profilu użytkownika z obiektuUser
. Zobacz Zarządzanie użytkownikami. W regułach zabezpieczeń Bazy danych czasu rzeczywistego Firebase i Cloud Storage możesz pobrać ze zmiennej
auth
unikalny identyfikator użytkownika zalogowanego użytkownika i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu różnych dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj
signOut
:
Web Modular API
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Interfejs API internetowej przestrzeni nazw
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });