FirebaseUI for Web ist eine Reihe von Bibliotheken, die auf dem Firebase Authentication JavaScript SDK basieren und Ihnen helfen, Authentifizierungsabläufe schnell zu implementieren.
FirebaseUI für das Web bietet folgende Vorteile:
- Unterstützung für moderne modulare SDKs mit
initializeApp(...)und dem aktuellen Firebase JS SDK. - Zusammensetzbare Bildschirme, Formulare und Schaltflächen anstelle eines einzelnen monolithischen Widgets.
- Unterstützung für React, Shadcn und Angular.
- Konfigurierbares Verhalten für Weiterleitungs- und Pop-up-Abläufe, Google One Tap, anonymes Upgrade, Telefoneinstellungen und mehr.
- Unterstützung für die Lokalisierung über
@firebase-oss/ui-translations. - Integrierte Unterstützung für E‑Mail/Passwort, E‑Mail-Link, Telefonauthentifizierung, OAuth-Anbieter und Multi-Faktor-Abläufe.
In diesem Leitfaden werden die Installation, Initialisierung, Anmeldemethoden und allgemeine Konfiguration für React-, Shadcn- und Angular-Apps beschrieben.
Hinweis
Firebase zu Ihrer Web-App hinzufügen:
Aktivieren Sie Authentifizierung in der Firebase Console.
Installieren Sie
firebase, falls es noch nicht in Ihrem Projekt enthalten ist:npm install firebaseModulares Firebase JS SDK verwenden:
import { initializeApp } from 'firebase/app'; const app = initializeApp({ /* your Firebase config */ });Wählen Sie Ihre Plattform aus und installieren Sie FirebaseUI:
Fügen Sie für auf shadcn/ui basierende React-Apps die Firebase-Registrierung zu
components.jsonhinzu:{ "registries": { "@firebase": "https://firebaseopensource.com/r/{name}.json" } }Die in diesem Leitfaden verwendeten Authentifizierungskomponenten sind in dieser Registry verfügbar, darunter
sign-in-auth-screen,sign-up-auth-screen,email-link-auth-screen,oauth-screen,phone-auth-screen,google-sign-in-button,apple-sign-in-buttonundgithub-sign-in-button.Fügen Sie dann die gewünschten Komponenten hinzu:
npx shadcn@latest add @firebase/sign-in-auth-screen @firebase/google-sign-in-buttonDadurch werden die zugrunde liegenden React FirebaseUI-Abhängigkeiten installiert.
Für React-Apps ohne shadcn/ui installieren Sie:
npm install @firebase-oss/ui-react@beta @firebase-oss/ui-stylesInstallieren Sie für Angular-Apps:
npm install @angular/fire @firebase-oss/ui-angular@beta @firebase-oss/ui-core@beta @firebase-oss/ui-styles@beta
FirebaseUI initialisieren
Erstellen Sie mit initializeUI(...) einen gemeinsamen UI-Speicher und übergeben Sie ihn dann an Ihre Framework-Integration.
Reagieren
import { initializeApp } from 'firebase/app';
import { initializeUI } from '@firebase-oss/ui-core';
import { FirebaseUIProvider } from '@firebase-oss/ui-react';
const app = initializeApp({
/* your Firebase config */
});
const ui = initializeUI({
app,
});
export function AppProviders({ children }: { children: React.ReactNode }) {
return <FirebaseUIProvider ui={ui}>{children}</FirebaseUIProvider>;
}
Shadcn
Shadcn verwendet dieselbe Einrichtung wie React, da es auch @firebase-oss/ui-react verwendet:
import { initializeApp } from 'firebase/app';
import { initializeUI } from '@firebase-oss/ui-core';
import { FirebaseUIProvider } from '@firebase-oss/ui-react';
const app = initializeApp({
/* your Firebase config */
});
const ui = initializeUI({
app,
});
export function AppProviders({ children }: { children: React.ReactNode }) {
return <FirebaseUIProvider ui={ui}>{children}</FirebaseUIProvider>;
}
Diese Komponenten verwenden Ihre vorhandenen shadcn-Stile. In der Regel importieren Sie das gebündelte CSS von FirebaseUI nicht, wenn Sie die shadcn-Registrierung verwenden.
Angular
import { type ApplicationConfig } from '@angular/core';
import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
import { provideFirebaseUI } from '@firebase-oss/ui-angular';
import { initializeUI } from '@firebase-oss/ui-core';
export const appConfig: ApplicationConfig = {
providers: [
provideFirebaseApp(() =>
initializeApp({
/* your Firebase config */
}),
),
provideFirebaseUI((apps) =>
initializeUI({
app: apps[0],
}),
),
],
};
Stile einbeziehen
FirebaseUI bietet vorgefertigte UI-Komponenten für React und Angular. Wenn Sie die Komponenten verwenden möchten, müssen Sie ihr CSS einbinden:
Wenn Sie Tailwind mit React oder Angular verwenden:
Andernfalls fügen Sie die FirebaseUI-Stile ein:
@import '@firebase-oss/ui-styles/dist.min.css';
FirebaseUI für das Web unterstützt benutzerdefinierte Designs über CSS-Variablenüberschreibungen. Weitere Informationen finden Sie in der Dokumentation zum Theming.
Anmeldemethoden einrichten
Bevor sich Nutzer anmelden können, müssen Sie jeden gewünschten Anbieter in der Firebase Console unter Authentifizierung -> Anmeldemethode aktivieren.
FirebaseUI für Web verwendet Bildschirme, Formulare und Schaltflächen, die Sie direkt rendern.
Die gemeinsame Konfiguration für diese Abläufe befindet sich in behaviors, das an initializeUI(...) übergeben wird.
E-Mail-Adresse und Passwort
- Aktivieren Sie E-Mail/Passwort in der Firebase Console.
- Rendern Sie
SignInAuthScreenoderSignUpAuthScreenin React, die generiertensign-in-auth-screen- odersign-up-auth-screen-Komponenten in Shadcn oderfui-sign-in-auth-screenoderfui-sign-up-auth-screenin Angular.
Authentifizierung über E-Mail-Link
- Aktivieren Sie in der Firebase Console E-Mail-Adresse/Passwort und E-Mail-Link (Anmeldung ohne Passwort).
- Rendern Sie
EmailLinkAuthScreenin React, die generierteemail-link-auth-screen-Komponente in Shadcn oderfui-email-link-auth-screenin Angular. - Schließen Sie die Anmeldung mit der aktuellen URL ab. Verwenden Sie dazu bei Bedarf die Core-Helper-Funktionen.
import { completeEmailLinkSignIn } from '@firebase-oss/ui-core';
await completeEmailLinkSignIn(ui, window.location.href);
OAuth-Anbieter
FirebaseUI für Web unterstützt integrierte Schaltflächen für Anbieter wie Google, Apple, Facebook, GitHub, Microsoft und X/Twitter.
- Aktivieren Sie den Anbieter in der Firebase Console.
- Fügen Sie die App-Domain bei Bedarf zu Autorisierte Domains hinzu.
- Rendern Sie
OAuthScreenmit den gewünschten Anbieter-Schaltflächen, z. B.GoogleSignInButton,AppleSignInButton,FacebookSignInButton,GitHubSignInButton,MicrosoftSignInButtonoderTwitterSignInButtonin React, den generierten shadcn-Entsprechungen in Ihrer App oderfui-oauth-screenmitfui-google-sign-in-button,fui-apple-sign-in-button,fui-facebook-sign-in-button,fui-github-sign-in-button,fui-microsoft-sign-in-buttonoderfui-twitter-sign-in-buttonin Angular.
Telefonnummer
- Aktivieren Sie Telefon in der Firebase Console.
- Fügen Sie die App-Domain zu Autorisierte Domains hinzu.
- Rendern Sie
PhoneAuthScreenoderPhoneAuthFormin React, die generiertenphone-auth-screen- oderphone-auth-form-Komponenten in Shadcn oderfui-phone-auth-screenin Angular.
Optional: Konfigurieren Sie zulässige Länder, das Standardland oder das reCAPTCHA-Verhalten:
import {
countryCodes,
initializeUI,
recaptchaVerification,
} from '@firebase-oss/ui-core';
const ui = initializeUI({
app,
behaviors: [
countryCodes({
allowedCountries: ['GB', 'US', 'FR'],
defaultCountry: 'GB',
}),
recaptchaVerification({
size: 'compact',
theme: 'light',
}),
],
});
Anpassung
Konfigurieren Sie das Verhalten der gemeinsamen Authentifizierung in behaviors, das an initializeUI(...) übergeben wird.
Bei der Registrierung einen Anzeigenamen angeben
import { initializeUI, requireDisplayName } from '@firebase-oss/ui-core';
const ui = initializeUI({
app,
behaviors: [requireDisplayName()],
});
Upgrade für anonyme Nutzer durchführen
Mit dem autoUpgradeAnonymousUsers(...)-Verhalten können Sie eine anonyme Sitzung in ein angemeldetes Konto zusammenführen.
import {
autoUpgradeAnonymousUsers,
initializeUI,
} from '@firebase-oss/ui-core';
const ui = initializeUI({
app,
behaviors: [
autoUpgradeAnonymousUsers({
async onUpgrade(ui, oldUserId, credential) {
// Migrate or merge user data here if needed.
},
}),
],
});
Weitere Informationen zur Migration finden Sie unter MIGRATION.md.
Anmelden
Rendern Sie den gewünschten Authentifizierungsbildschirm und verarbeiten Sie den Erfolg in Komponenten-Callbacks oder Angular-Ausgaben.
Reagieren
```tsx import { SignInAuthScreen } from '@firebase-oss/ui-react'; import { useNavigate } from 'react-router';export function SignInPage() { const navigate = useNavigate();
return (
Shadcn
Shadcn verwendet dieselbe Laufzeit und denselben Ablauf wie React. Der einzige Unterschied besteht darin, dass Sie die generierte Komponente aus Ihrer App anstelle von @firebase-oss/ui-react importieren:
export function SignInPage() { const navigate = useNavigate();
return (
Angular
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { SignInAuthScreenComponent } from '@firebase-oss/ui-angular';
import type { User } from '@angular/fire/auth';
@Component({
selector: 'app-sign-in-page',
standalone: true,
imports: [SignInAuthScreenComponent],
template: `
<fui-sign-in-auth-screen (signIn)="onSignIn($event)" />
`,
})
export class SignInPageComponent {
constructor(private router: Router) {}
onSignIn(user: User) {
this.router.navigate(['/dashboard']);
}
}
Abmelden
Verwenden Sie zum Abmelden von Nutzern die standardmäßige Firebase Authentication-Abmelde-API:
import { getAuth, signOut } from 'firebase/auth';
const auth = getAuth(app);
await signOut(auth);
OAuth-Anbieter: Pop-up oder Weiterleitung
Wählen Sie den Anmeldevorgang des Anbieters mit Verhaltensweisen aus:
providerPopupStrategy()für Pop-up-AbläufeproviderRedirectStrategy()für Weiterleitungsabläufe
Das Pop-up ist die Standardeinstellung. Sie müssen die Weiterleitung also nur explizit konfigurieren:
import { initializeUI, providerRedirectStrategy } from '@firebase-oss/ui-core';
const ui = initializeUI({
app,
behaviors: [providerRedirectStrategy()],
});
Wenn Sie OAuth-Schaltflächen rendern möchten, fügen Sie sie dem plattformspezifischen Bildschirm hinzu.
Reagieren
import {
GitHubSignInButton,
GoogleSignInButton,
OAuthScreen,
} from '@firebase-oss/ui-react';
export function OAuthPage() {
return (
<OAuthScreen>
<GoogleSignInButton />
<GitHubSignInButton />
</OAuthScreen>
);
}
Shadcn
import { GitHubSignInButton } from '@/components/github-sign-in-button';
import { GoogleSignInButton } from '@/components/google-sign-in-button';
import { OAuthScreen } from '@/components/oauth-screen';
export function OAuthPage() {
return (
<OAuthScreen>
<GoogleSignInButton />
<GitHubSignInButton />
</OAuthScreen>
);
}
Angular
import { Component } from '@angular/core';
import {
GithubSignInButtonComponent,
GoogleSignInButtonComponent,
OAuthScreenComponent,
} from '@firebase-oss/ui-angular';
@Component({
selector: 'app-oauth-page',
standalone: true,
imports: [
OAuthScreenComponent,
GoogleSignInButtonComponent,
GithubSignInButtonComponent,
],
template: `
<fui-oauth-screen>
<fui-google-sign-in-button />
<fui-github-sign-in-button />
</fui-oauth-screen>
`,
})
export class OAuthPageComponent {}
Google One Tap
So aktivieren Sie Google One Tap mit dem Verhalten oneTapSignIn(...):
import { initializeUI, oneTapSignIn } from '@firebase-oss/ui-core';
const ui = initializeUI({
app,
behaviors: [
oneTapSignIn({
clientId: 'YOUR_GOOGLE_WEB_CLIENT_ID',
autoSelect: false,
cancelOnTapOutside: false,
}),
],
});
Achten Sie darauf, dass die Google-Anmeldung in der Firebase Console aktiviert ist. Kopieren Sie dann die Webclient-ID aus den Google-Anbietereinstellungen.
Nutzungsbedingungen und Datenschutzerklärung
Richtlinienlinks über die Konfiguration des Plattformanbieters anhängen
Reagieren
```tsx import { FirebaseUIProvider } from '@firebase-oss/ui-react';<FirebaseUIProvider ui={ui} policies={{ termsOfServiceUrl: 'https://example.com/terms', privacyPolicyUrl: 'https://example.com/privacy', }}
{children} ; ```
Shadcn
Verwenden Sie dieselbe FirebaseUIProvider-Konfiguration wie React.
Angular
import { type ApplicationConfig } from '@angular/core';
import { provideFirebaseUIPolicies } from '@firebase-oss/ui-angular';
export const appConfig: ApplicationConfig = {
providers: [
provideFirebaseUIPolicies(() => ({
termsOfServiceUrl: 'https://example.com/terms',
privacyPolicyUrl: 'https://example.com/privacy',
})),
],
};
Übersetzungen
FirebaseUI für das Web unterstützt die Lokalisierung über @firebase-oss/ui-translations.
import { initializeUI } from '@firebase-oss/ui-core';
import { registerLocale } from '@firebase-oss/ui-translations';
const enUsCustom = registerLocale('en-US', {
labels: {
signIn: 'Continue',
},
});
const ui = initializeUI({
app,
locale: enUsCustom,
});
Nächste Schritte
- Die vollständige API, das Verhalten und die Komponentenreferenz finden Sie in der Datei README.md.
- Lesen Sie MIGRATION.md, wenn Sie eine vorhandene App zu FirebaseUI für Web migrieren.
- Die paketspezifische Dokumentation finden Sie unter packages/react/README.md, packages/shadcn/README.md und packages/angular/README.md.
- Sehen Sie sich die Beispiele in examples/react, examples/shadcn und examples/angular an.