
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 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 bei der Lokalisierung über
@firebase-oss/ui-translations. - Integrierte Unterstützung für E‑Mail-Adresse/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 Authentication in der Firebase Console.
Installieren Sie
firebase, falls es noch nicht in Ihrem Projekt vorhanden 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 Auth-Komponenten 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. Normalerweise 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 einschließen
FirebaseUI bietet vorgefertigte UI-Komponenten für React und Angular. Wenn Sie die Komponenten verwenden möchten, müssen Sie ihr CSS einfügen:
Wenn Sie Tailwind mit React oder Angular verwenden:
Andernfalls müssen Sie die FirebaseUI-Stile einbinden:
@import '@firebase-oss/ui-styles/dist.min.css';
FirebaseUI für 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 in der Firebase Console unter Authentifizierung –> Anmeldemethode jeden gewünschten Anbieter 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/Passwort und E‑Mail-Link (anmelden 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 bei Bedarf die App-Domain 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 Ihre 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 die zulässigen 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 ist ein Anzeigename erforderlich
import { initializeUI, requireDisplayName } from '@firebase-oss/ui-core';
const ui = initializeUI({
app,
behaviors: [requireDisplayName()],
});
Upgrade für anonyme Nutzer durchführen
Mit dem Verhalten autoUpgradeAnonymousUsers(...) 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.
},
}),
],
});
Details zur Migration finden Sie in der Datei 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 im Vergleich zur Weiterleitung
Wählen Sie den Anmelde-Flow des Anbieters mit Verhaltensweisen aus:
providerPopupStrategy()für Pop-up-FlowsproviderRedirectStrategy()für Weiterleitungsabläufe
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 Google-Anmeldung in der Firebase Console aktiviert ist, und kopieren Sie dann die Web-Client-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 für 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 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 paketbezogene 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.