Das Admin SDK ist eine Reihe von Serverbibliotheken, mit denen Sie aus privilegierten Umgebungen mit Firebase interagieren können, um beispielsweise folgende Aktionen auszuführen:
- Führen Sie Abfragen und Mutationen für einen Firebase SQL Connect-Dienst für das Bulk-Datenmanagement und andere Vorgänge mit vollständigen Administratorberechtigungen aus.
- Realtime Database-Daten mit vollständigen Administratorberechtigungen lesen und schreiben.
- Firebase Cloud Messaging-Nachrichten programmatisch mit einem einfachen, alternativen Ansatz zu den Firebase Cloud Messaging-Serverprotokollen senden.
- Firebase-Authentifizierungstokens generieren und prüfen
- Auf Google Cloud-Ressourcen wie Cloud Storage-Buckets und Cloud Firestore-Datenbanken zugreifen, die mit Ihren Firebase-Projekten verknüpft sind.
- Sie können eine eigene vereinfachte Admin-Konsole erstellen, um beispielsweise Nutzerdaten nachzuschlagen oder die E-Mail-Adresse eines Nutzers für die Authentifizierung zu ändern.
Wenn Sie das Node.js SDK als Client für den Endnutzerzugriff (z. B. in einer Node.js-Desktop- oder IoT-Anwendung) und nicht für den Administratorzugriff aus einer privilegierten Umgebung (z. B. einem Server) verwenden möchten, sollten Sie stattdessen der Anleitung zum Einrichten des JavaScript SDK folgen.
Hier finden Sie eine Feature-Matrix, die zeigt, welche Firebase-Features in den einzelnen Sprachen unterstützt werden:
Weitere Informationen zur Integration von Admin SDK für diese Anwendungsfälle finden Sie in der entsprechenden Dokumentation zu Realtime Database, FCM, Authentication, Remote Config und Cloud Storage. Im weiteren Verlauf dieser Seite geht es um die grundlegende Einrichtung des Admin SDK.
Vorbereitung
Prüfen Sie, ob Sie eine Server-App haben.
Achten Sie darauf, dass auf Ihrem Server je nach verwendetem Admin SDK Folgendes ausgeführt wird:
- Admin Node.js SDK – Node.js 22+
- Admin Java SDK – Java 8+
- Admin Python SDK – Python 3.9 oder höher (Python 3.10 oder höher empfohlen)
Die Unterstützung für Python 3.9 wurde eingestellt. - Admin Go SDK – Go 1.25+
- Admin .NET SDK – .NET Framework 4.6.2 oder höher, .NET Standard 2.0 oder .NET 6.0 oder höher (empfohlen: .NET 8.0 oder höher)
Die Unterstützung für .NET 6.0 und 7.0 wurde eingestellt. - Experimentelles Admin Dart SDK: Auf Ihrem Server muss Dart SDK 3.9 oder höher ausgeführt werden.
- Admin Node.js SDK – Node.js 22+
Firebase-Projekt und -Dienstkonto einrichten
Für die Verwendung des Firebase Admin SDK benötigen Sie Folgendes:
- Ein Firebase-Projekt
- Ein Firebase Admin SDK-Dienstkonto für die Kommunikation mit Firebase. Dieses Dienstkonto wird automatisch erstellt, wenn Sie ein Firebase-Projekt erstellen oder Firebase einem Google Cloud-Projekt hinzufügen.
- Eine Konfigurationsdatei mit den Anmeldedaten Ihres Dienstkontos.
Wenn Sie noch kein Firebase-Projekt haben, müssen Sie eines in der Firebase-Konsole erstellen. Weitere Informationen zu Firebase-Projekten finden Sie unter Firebase-Projekte.
SDK hinzufügen
Wenn Sie ein neues Projekt einrichten, müssen Sie das SDK für die gewünschte Sprache installieren.
Node.js
Das Firebase Admin Node.js SDK ist auf npm verfügbar. Wenn Sie noch keine package.json-Datei haben, erstellen Sie eine mit npm init. Installieren Sie als Nächstes das npm-Paket firebase-admin und speichern Sie es in Ihrer package.json:
npm install firebase-admin --save
Wenn Sie das Modul in Ihrer Anwendung verwenden möchten, require Sie es aus einer beliebigen JavaScript-Datei:
const { initializeApp } = require('firebase-admin/app');
Wenn Sie ES2015 verwenden, können Sie das Modul import:
import { initializeApp } from 'firebase-admin/app';
Java
Das Firebase Admin Java SDK wird im Maven Central Repository veröffentlicht.
Um die Bibliothek zu installieren, müssen Sie sie als Abhängigkeit in Ihrer build.gradle-Datei deklarieren:
dependencies {
implementation 'com.google.firebase:firebase-admin:9.11.0'
}
Wenn Sie Maven zum Erstellen Ihrer Anwendung verwenden, können Sie Ihrer pom.xml die folgende Abhängigkeit hinzufügen:
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.11.0</version>
</dependency>
Python
Das Firebase Admin Python SDK ist über pip verfügbar.
Sie können die Bibliothek für alle Nutzer über sudo installieren:
sudo pip install firebase-admin
Alternativ können Sie die Bibliothek nur für den aktuellen Nutzer installieren, indem Sie das Flag --user übergeben:
pip install --user firebase-admin
Go
Das Go-Admin SDK kann mit dem Dienstprogramm go get installiert werden:
# Install the latest version:
go get firebase.google.com/go/v4@latest
# Or install a specific version:
go get firebase.google.com/go/v4@4.22.0
C#
Das .NET-Admin SDK kann mit dem .NET-Paketmanager installiert werden:
Install-Package FirebaseAdmin -Version 3.7.0
Alternativ können Sie es mit dem dotnet-Befehlszeilentool installieren:
dotnet add package FirebaseAdmin --version 3.7.0
Sie können es auch installieren, indem Sie der Datei .csproj den folgenden Paketverweis hinzufügen:
<ItemGroup>
<PackageReference Include="FirebaseAdmin" Version="3.7.0" />
</ItemGroup>
Dart (experimentell)
dart pub add firebase_admin_sdk
Importieren Sie das Modul wie folgt, um es in Ihrer Anwendung zu verwenden:
import 'package:firebase_admin_sdk';
// Also import the separate Firestore package if you're interacting with Firestore.
import 'package:google_cloud_firestore/google_cloud_firestore.dart';
SDK initialisieren
Nachdem Sie ein Firebase-Projekt erstellt haben, können Sie das SDK mit Standardanmeldedaten für Anwendungen von Google initialisieren. Da die Suche nach Standardanmeldedaten in Google-Umgebungen vollständig automatisiert ist und keine Umgebungsvariablen oder andere Konfigurationen angegeben werden müssen, wird diese Art der Initialisierung des SDK für Anwendungen, die in Google-Umgebungen wie Firebase App Hosting, Cloud Run, App Engine und Cloud Functions for Firebase ausgeführt werden, dringend empfohlen.
Wenn Sie optional Initialisierungsoptionen für Dienste wie Realtime Database, Cloud Storage oder Cloud Functions angeben möchten, verwenden Sie die Umgebungsvariable FIREBASE_CONFIG. Wenn der Inhalt der Variable FIREBASE_CONFIG mit einem { beginnt, wird er als JSON-Objekt geparst. Andernfalls geht das SDK davon aus, dass der String der Pfad einer JSON-Datei ist, die die Optionen enthält.
Node.js
const app = initializeApp();
Java
FirebaseApp.initializeApp();
Python
default_app = firebase_admin.initialize_app()
Go
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create();
Dart (experimentell)
final admin = FirebaseApp.initializeApp();
Nach der Initialisierung können Sie mit dem Admin SDK die folgenden Arten von Aufgaben ausführen:
- Benutzerdefinierte Authentifizierung implementieren
- Firebase Authentication-Nutzer verwalten
- Administrative Abfragen und Mutationen für einen Firebase SQL Connect-Dienst ausführen.
- Daten aus dem Realtime Database lesen und in ihn schreiben
- Firebase Cloud Messaging Nachrichten senden
OAuth 2.0-Aktualisierungstoken verwenden
Der Admin SDK stellt auch Anmeldedaten bereit, mit denen Sie sich mit einem Google OAuth2-Aktualisierungstoken authentifizieren können:
Node.js
const myRefreshToken = '...'; // Get refresh token from OAuth2 flow
initializeApp({
credential: refreshToken(myRefreshToken),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
Java
FileInputStream refreshToken = new FileInputStream("path/to/refreshToken.json");
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(refreshToken))
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Python
cred = credentials.RefreshToken('path/to/refreshToken.json')
default_app = firebase_admin.initialize_app(cred)
Go
opt := option.WithCredentialsFile("path/to/refreshToken.json")
config := &firebase.Config{ProjectID: "my-project-id"}
app, err := firebase.NewApp(context.Background(), config, opt)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create(new AppOptions()
{
Credential = CredentialFactory.FromFile<UserCredential>("path/to/refreshToken.json").ToGoogleCredential(),
});
SDK in Nicht-Google-Umgebungen initialisieren
Wenn Sie in einer Serverumgebung arbeiten, die nicht von Google stammt und in der die Suche nach Standardanmeldedaten nicht vollständig automatisiert werden kann, können Sie das SDK mit einer exportierten Dienstkontoschlüsseldatei initialisieren.
Firebase-Projekte unterstützen Google-Dienstkonten, mit denen Sie Firebase-Server-APIs von Ihrem Anwendungsserver oder Ihrer vertrauenswürdigen Umgebung aus aufrufen können. Wenn Sie Code lokal entwickeln oder Ihre Anwendung lokal bereitstellen, können Sie mit den Anmeldedaten, die Sie mit diesem Dienstkonto erhalten, Serveranfragen autorisieren.
Sie können alle Dienstkonten für Ihr Firebase-Projekt auf dem Tab
Wenn Sie ein Dienstkonto authentifizieren und für den Zugriff auf Firebase-Dienste autorisieren möchten, müssen Sie eine private Schlüsseldatei im JSON-Format generieren.
So generieren Sie eine private Schlüsseldatei für Ihr Dienstkonto:
Rufen Sie in der Firebase-Konsole die Seite
Einstellungen > Tab Dienstkonten auf.Klicken Sie auf Neuen privaten Schlüssel generieren und bestätigen Sie mit Schlüssel generieren.
Speichern Sie die JSON-Datei mit dem Schlüssel an einem sicheren Ort.
Wenn Sie die Autorisierung über ein Dienstkonto vornehmen, haben Sie zwei Möglichkeiten, die Anmeldedaten für Ihre Anwendung bereitzustellen. Sie können entweder die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS festlegen oder den Pfad zum Dienstkontoschlüssel explizit im Code übergeben. Die erste Option ist sicherer und wird dringend empfohlen.
So legen Sie die Umgebungsvariable fest:
Legen Sie für die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS den Dateipfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable noch einmal festlegen.
Linux oder macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Mit PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Nachdem Sie die oben genannten Schritte ausgeführt haben, können die Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) Ihre Anmeldedaten implizit ermitteln. So können Sie Dienstkonto-Anmeldedaten verwenden, wenn Sie in Nicht-Google-Umgebungen testen oder ausführen.
Initialisieren Sie das SDK wie folgt:
Node.js
initializeApp({
credential: applicationDefault(),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
Java
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Python
default_app = firebase_admin.initialize_app()
Go
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
ProjectId = "my-project-id",
});
Mehrere Apps initialisieren
In den meisten Fällen müssen Sie nur eine einzige Standard-App initialisieren. Sie können auf zwei gleichwertige Arten auf Dienste dieser App zugreifen:
Node.js
// Initialize the default app
const defaultApp = initializeApp(defaultAppConfig);
console.log(defaultApp.name); // '[DEFAULT]'
// Retrieve services via the defaultApp variable...
let defaultAuth = getAuth(defaultApp);
let defaultDatabase = getDatabase(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = getAuth();
defaultDatabase = getDatabase();
Java
// Initialize the default app
FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions);
System.out.println(defaultApp.getName()); // "[DEFAULT]"
// Retrieve services by passing the defaultApp variable...
FirebaseAuth defaultAuth = FirebaseAuth.getInstance(defaultApp);
FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = FirebaseAuth.getInstance();
defaultDatabase = FirebaseDatabase.getInstance();
Python
# Import the Firebase service
from firebase_admin import auth
# Initialize the default app
default_app = firebase_admin.initialize_app(cred)
print(default_app.name) # "[DEFAULT]"
# Retrieve services via the auth package...
# auth.create_custom_token(...)
Go
// Initialize default app
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Access auth service from the default app
client, err := app.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
C#
// Initialize the default app
var defaultApp = FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
});
Console.WriteLine(defaultApp.Name); // "[DEFAULT]"
// Retrieve services by passing the defaultApp variable...
var defaultAuth = FirebaseAuth.GetAuth(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = FirebaseAuth.DefaultInstance;
In einigen Anwendungsfällen müssen Sie mehrere Apps gleichzeitig erstellen. Beispielsweise können Sie Daten aus der Realtime Database eines Firebase-Projekts lesen und benutzerdefinierte Tokens für ein anderes Projekt erstellen. Oder Sie möchten zwei Anwendungen mit separaten Anmeldedaten authentifizieren. Mit dem Firebase SDK können Sie mehrere Apps gleichzeitig erstellen, die jeweils eigene Konfigurationsinformationen haben.
Node.js
// Initialize the default app
initializeApp(defaultAppConfig);
// Initialize another app with a different config
var otherApp = initializeApp(otherAppConfig, 'other');
console.log(getApp().name); // '[DEFAULT]'
console.log(otherApp.name); // 'other'
// Use the shorthand notation to retrieve the default app's services
const defaultAuth = getAuth();
const defaultDatabase = getDatabase();
// Use the otherApp variable to retrieve the other app's services
const otherAuth = getAuth(otherApp);
const otherDatabase = getDatabase(otherApp);
Java
// Initialize the default app
FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions);
// Initialize another app with a different config
FirebaseApp otherApp = FirebaseApp.initializeApp(otherAppConfig, "other");
System.out.println(defaultApp.getName()); // "[DEFAULT]"
System.out.println(otherApp.getName()); // "other"
// Use the shorthand notation to retrieve the default app's services
FirebaseAuth defaultAuth = FirebaseAuth.getInstance();
FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance();
// Use the otherApp variable to retrieve the other app's services
FirebaseAuth otherAuth = FirebaseAuth.getInstance(otherApp);
FirebaseDatabase otherDatabase = FirebaseDatabase.getInstance(otherApp);
Python
# Initialize the default app
default_app = firebase_admin.initialize_app(cred)
# Initialize another app with a different config
other_app = firebase_admin.initialize_app(cred, name='other')
print(default_app.name) # "[DEFAULT]"
print(other_app.name) # "other"
# Retrieve default services via the auth package...
# auth.create_custom_token(...)
# Use the `app` argument to retrieve the other app's services
# auth.create_custom_token(..., app=other_app)
Go
// Initialize the default app
defaultApp, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Initialize another app with a different config
opt := option.WithCredentialsFile("service-account-other.json")
otherApp, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Access Auth service from default app
defaultClient, err := defaultApp.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
// Access auth service from other app
otherClient, err := otherApp.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
C#
// Initialize the default app
var defaultApp = FirebaseApp.Create(defaultOptions);
// Initialize another app with a different config
var otherApp = FirebaseApp.Create(otherAppConfig, "other");
Console.WriteLine(defaultApp.Name); // "[DEFAULT]"
Console.WriteLine(otherApp.Name); // "other"
// Use the shorthand notation to retrieve the default app's services
var defaultAuth = FirebaseAuth.DefaultInstance;
// Use the otherApp variable to retrieve the other app's services
var otherAuth = FirebaseAuth.GetAuth(otherApp);
Bereiche für Realtime Database und Authentication festlegen
Wenn Sie eine Google Compute Engine-VM mit Standardanmeldedaten für Anwendungen für Realtime Database oder Authentication verwenden, müssen Sie auch die richtigen Zugriffsbereiche festlegen.
Für Realtime Database und Authentication benötigen Sie Bereiche, die auf userinfo.email und entweder cloud-platform oder firebase.database enden. Führen Sie die folgenden Befehle mit gcloud aus, um die vorhandenen Zugriffsbereiche zu prüfen und zu ändern.
gcloud
# Check the existing access scopes
gcloud compute instances describe [INSTANCE_NAME] --format json
# The above command returns the service account information. For example:
"serviceAccounts": [
{
"email": "your.gserviceaccount.com",
"scopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/userinfo.email"
]
}
],
# Stop the VM, then run the following command, using the service account
# that gcloud returned when you checked the scopes.
gcloud compute instances set-service-account [INSTANCE_NAME] --service-account "your.gserviceaccount.com" --scopes "https://www.googleapis.com/auth/firebase.database,https://www.googleapis.com/auth/userinfo.email"
Mit gcloud-Anmeldedaten für Endnutzer testen
Wenn Sie die Admin SDK lokal mit Google-Standardanmeldedaten für Anwendungen testen, die Sie durch Ausführen von gcloud auth application-default login erhalten haben, sind zusätzliche Änderungen erforderlich, um Firebase Authentication zu verwenden. Das hat folgende Gründe:
- Firebase Authentication akzeptiert keine gcloud-Endnutzeranmeldedaten, die mit der gcloud-OAuth-Client-ID generiert wurden.
- Firebase Authentication erfordert die Angabe der Projekt-ID bei der Initialisierung für diese Art von Endnutzer-Anmeldedaten.
Als Behelfslösung können Sie in gcloud mit Ihrer eigenen OAuth 2.0-Client-ID Standardanmeldedaten für Anwendungen generieren. Die OAuth-Client-ID muss vom Anwendungstyp Desktop-Anwendung sein.
gcloud
gcloud auth application-default login --client-id-file=[/path/to/client/id/file]
Sie können die Projekt-ID bei der App-Initialisierung explizit angeben oder einfach die Umgebungsvariable GOOGLE_CLOUD_PROJECT verwenden. Letzteres vermeidet, dass Sie zusätzliche Änderungen vornehmen müssen, um Ihren Code zu testen.
So geben Sie die Projekt-ID explizit an:
Node.js
import { initializeApp, applicationDefault } from 'firebase-admin/app';
initializeApp({
credential: applicationDefault(),
projectId: '<FIREBASE_PROJECT_ID>',
});
Java
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setProjectId("<FIREBASE_PROJECT_ID>")
.build();
FirebaseApp.initializeApp(options);
Python
app_options = {'projectId': '<FIREBASE_PROJECT_ID>'}
default_app = firebase_admin.initialize_app(options=app_options)
Go
config := &firebase.Config{ProjectID: "<FIREBASE_PROJECT_ID>"}
app, err := firebase.NewApp(context.Background(), config)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
ProjectId = "<FIREBASE_PROJECT_ID>",
});
Nächste Schritte
Weitere Informationen zu Firebase:
Firebase-Beispiel-Apps ansehen
Sehen Sie sich den Open-Source-Quellcode in GitHub für Node.js, Java und Python an.
Blogposts zu Admin SDK von einem der Entwickler von Admin SDK Beispiel: Über einen Proxyserver auf Firestore und Firebase zugreifen
Fügen Sie Ihrer App Firebase-Funktionen hinzu:
- Schreiben Sie ein serverloses Backend mit Cloud Functions.
- Speichern Sie Informationen mit Realtime Database oder Blob-Daten mit Cloud Storage.
- Benachrichtigungen mit Cloud Messaging erhalten.