Google jest zaangażowana w pogłębianie równości rasowej dla czarnych społecznościach. Zobacz jak.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Dodaj Firebase Admin SDK do serwera

Admin SDK pozwala na interakcję z Firebase z uprzywilejowanych środowisk do wykonywania czynności, takich jak:

  • Odczytywać i zapisywać dane czasu rzeczywistego z bazami danych z pełnymi uprawnieniami administratora.
  • Programowo wysyłać wiadomości Firebase Cloud Messaging za pomocą prostego, alternatywnego podejścia do protokołów serwerowych Firebase Cloud Messaging.
  • Generowanie i zweryfikować Firebase tokenów uwierzytelniających.
  • Zasoby Cloud Platform dostęp Google Cloud Storage jak wiadra i baz danych Chmura FireStore związanych z projektami Firebase.
  • Stwórz własną konsolę administratora uproszczone robić takie rzeczy jak wygląd zapasowych danych użytkownika lub zmienić adres e-mail użytkownika do uwierzytelniania.

Jeśli jesteś zainteresowany pomocą node.js SDK jako klienta dostępu użytkowników końcowych (na przykład w pulpicie node.js lub aplikacji IoT), w przeciwieństwie do dostępu administratora z uprzywilejowanego środowiska (jak serwer), ty należy zamiast postępować zgodnie z instrukcjami konfigurowania klienta JavaScript SDK .

Tutaj jest macierzą funkcja pokazuje jakie funkcje Firebase są obsługiwane w każdym języku:

Funkcja node.js Jawa Pyton Udać się DO#
Zwyczaj bicia Reklamowe
ID Reklamowe Weryfikacja
Zarządzanie użytkownikami
Kontrola dostępu z niestandardowymi Roszczenia
Odśwież Reklamowe Cofnięcie
Importowanie użytkowników
Zarząd sesji Cookie
Generowanie email Action Links
Zarządzanie konfiguracjami dostawcy SAML / OIDC
Wielu najmu wsparcie
Baza danych w czasie rzeczywistym *
Firebase Cloud Messaging
FCM Multicast
Zarządzaj FCM Temat Subskrypcje
Magazyn w chmurze
Chmura Firestore
Zarządzanie projektami
Zasady bezpieczeństwa
ML Model Management
Firebase Remote Config

Aby dowiedzieć się więcej na temat integracji Admin SDK dla tych zastosowań, patrz odpowiednie bazy danych w czasie rzeczywistym , FCM , uwierzytelniania i Cloud Storage dokumentacji. Reszta tej strony skupia się na podstawowej konfiguracji dla Admin SDK.

Wymagania

  • Upewnij się, że masz aplikację serwera.

  • Upewnij się, że serwer, na którym działa Admin SDK, które należy stosować następujące zależności:

    • Administrator node.js SDK - node.js 10.10.0+
    • Admin SDK Java - Java 7+ (zalecane Java 8+)
      7 wsparcie Java jest przestarzała.
    • Admin SDK Python - Python 3.5+
    • Admin SDK Go - Go 1.11+
    • Administrator .NET SDK - .NET Framework lub .NET 4.5+ Rdzeń 1.5+

Skonfiguruj projekt Firebase i konto usługi

Aby korzystać z Firebase Admin SDK, trzeba co następuje:

  • Projekt A Firebase
  • Konto usługa komunikacji z Firebase
  • Plik konfiguracyjny z poświadczeniami swojego konta usługi za

Jeżeli nie masz jeszcze projekt Firebase, trzeba utworzyć w konsoli Firebase . Wizyta Zrozum Firebase Projekty aby dowiedzieć się więcej o projektach Firebase.

Dodaj SDK

Jeśli konfigurujesz nowy projekt, trzeba zainstalować SDK dla języka swojego wyboru.

node.js

Firebase Admin node.js SDK jest dostępny na KMP. Jeżeli nie masz jeszcze package.json pliku, utwórz je poprzez npm init . Następnie zainstalować firebase-admin pakiet npm i zapisać go na dysku package.json :

 $ npm install firebase-admin --save
 

Aby korzystać z modułu w aplikacji, require to od każdego pliku javascript:

 var admin = require('firebase-admin');
 

Jeśli używasz ES2015 można import moduł zamiast:

 import * as admin from 'firebase-admin';
 

Jawa

Firebase Admin Java SDK jest opublikowany w centralnym repozytorium Maven. Aby zainstalować bibliotekę, zadeklarować go jako zależność w swoim build.gradle pliku:

 dependencies {
  implementation 'com.google.firebase:firebase-admin:6.15.0'
}
 

Jeśli używasz Maven do budowania aplikacji, można dodać następującą zależność do pom.xml :

 <dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>6.15.0</version>
</dependency>
 

Pyton

Firebase Admin Python SDK jest dostępny poprzez pip . Można zainstalować bibliotekę dla wszystkich użytkowników poprzez sudo :

 $ sudo pip install firebase-admin
 

Czy można zainstalować bibliotekę tylko dla bieżącego użytkownika poprzez przepuszczenie --user flagę:

 $ pip install --user firebase-admin
 

Udać się

Go Admin SDK można zainstalować przy użyciu go get narzędzia:

 # Install as a module dependency
$ go get firebase.google.com/go/v4

# Install to $GOPATH
$ go get firebase.google.com/go
 

DO#

.NET Admin SDK można zainstalować za pomocą menedżera pakietów NET:

 $ Install-Package FirebaseAdmin -Version 1.15.0
 

Alternatywnie, należy zainstalować go za pomocą dotnet narzędzia wiersza:

 $ dotnet add package FirebaseAdmin --version 1.15.0
 

Lub, można go zainstalować dodając wpis odniesienia następujący pakiet do swojego .csproj pliku:

 <ItemGroup>
  <PackageReference Include="FirebaseAdmin" Version="1.15.0" />
</ItemGroup>
 

Zainicjować SDK

Po utworzeniu projektu Firebase można zainicjować SDK ze strategią autoryzacji, który łączy plik konta usługi wraz z Google domyślną aplikacją poświadczenia .

Projekty Firebase obsługują Google kont usług , których można użyć, aby zadzwonić API serwera Firebase z serwera aplikacji lub zaufanym środowisku. Jeśli rozwój kod lokalnie lub wdrażania aplikacji w pomieszczeniach, można użyć referencji uzyskanych za pośrednictwem tego konta usługi do autoryzacji żądań serwera.

Do uwierzytelniania konta usługi i zezwolić na dostęp do usług Firebase, należy wygenerować plik klucza prywatnego w formacie JSON.

Aby wygenerować plik klucza prywatnego dla konta usługi:

  1. W konsoli Firebase, otwartych Ustawienia> Konta usług .

  2. Kliknij przycisk Utwórz nowy klucz prywatny, a następnie potwierdź klikając Generowanie klucza.

  3. Bezpiecznie przechowywać plik JSON zawierający klucz.

Przy udzielaniu zezwolenia za pośrednictwem konta usługi, masz dwie możliwości za dostarczenie poświadczenia do aplikacji. Można też ustawić GOOGLE_APPLICATION_CREDENTIALS zmienną środowiskową, czy można jednoznacznie przekazać ścieżkę do klucza konta usługi w kodzie. Pierwsza opcja jest bezpieczniejsza i jest zalecane.

Aby ustawić zmienną środowiskową:

Ustawić zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS do ścieżki pliku pliku JSON, który zawiera klucz konta usługi. Zmienna ta ma zastosowanie wyłącznie do bieżącej sesji powłoki, więc jeśli otworzysz nową sesję, należy ustawić zmienną ponownie.

Linux lub MacOS

 export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
 

okna

Z PowerShell:

 $env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
 

Po wykonaniu powyższych czynności, Poświadczenia domyślnej aplikacji (ADC) jest w stanie w sposób dorozumiany określić poświadczenia, co pozwala na użycie poświadczeń konta Usługa podczas testowania lub działa w środowiskach innych niż Google.

Zainicjować SDK jak przedstawiono poniżej:

node.js

 admin.initializeApp({
  credential: admin.credential.applicationDefault(),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
 

Jawa

 FirebaseOptions options = new FirebaseOptions.Builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);
 

Pyton

 default_app = firebase_admin.initialize_app()
 

Udać się

 app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
} 

DO#

 FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.GetApplicationDefault(),
});
 

Korzystanie z tokena odświeżania OAuth 2.0

Admin SDK zapewnia również poświadczenia który umożliwia uwierzytelnianie z Google OAuth2 odświeżyć znak:

node.js

 var refreshToken; // Get refresh token from OAuth2 flow

admin.initializeApp({
  credential: admin.credential.refreshToken(refreshToken),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
 

Jawa

 FileInputStream refreshToken = new FileInputStream("path/to/refreshToken.json");

FirebaseOptions options = new FirebaseOptions.Builder()
    .setCredentials(GoogleCredentials.fromStream(refreshToken))
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);
 

Pyton

 cred = credentials.RefreshToken('path/to/refreshToken.json')
default_app = firebase_admin.initialize_app(cred)
 

Udać się

 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)
} 

DO#

 FirebaseApp.Create(new AppOptions()
{
    Credential = GoogleCredential.FromFile("path/to/refreshToken.json"),
});
 

Zainicjować bez parametrów

SDK może być również inicjowane bez parametrów. W tym przypadku SDK wykorzystuje Google domyślną aplikacją Poświadczenia i czyta opcje z FIREBASE_CONFIG zmiennej środowiskowej. Jeśli zawartość FIREBASE_CONFIG zmiennej zaczyna się od { będzie analizowany jako obiekt JSON. W przeciwnym wypadku SDK zakłada, że ​​ciąg jest nazwa pliku JSON zawierającego opcje.

node.js

 // Initialize the default app
var admin = require('firebase-admin');
var app = admin.initializeApp();
 

Jawa

 FirebaseApp.initializeApp();
 

Pyton

 default_app = firebase_admin.initialize_app()
 

Udać się

 app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
	log.Fatalf("error initializing app: %v\n", err)
} 

DO#

 FirebaseApp.Create();
 

Gdy jest zainicjowany, można użyć SDK administratora, aby osiągnąć następujące rodzaje zadań:

Zainicjować wiele aplikacji

W większości przypadków wystarczy tylko zainicjować jedną, domyślną aplikację. Można wyłączyć dostęp do usług tej aplikacji w dwóch równoważnych sposobów:

node.js

 // Initialize the default app
var defaultApp = admin.initializeApp(defaultAppConfig);

console.log(defaultApp.name);  // '[DEFAULT]'

// Retrieve services via the defaultApp variable...
var defaultAuth = defaultApp.auth();
var defaultDatabase = defaultApp.database();

// ... or use the equivalent shorthand notation
defaultAuth = admin.auth();
defaultDatabase = admin.database();
 

Jawa

 // 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();
 

Pyton

 # 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(...)
 

Udać się

 // 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)
} 

DO#

 // 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;
 

Niektóre przypadki użycia wymaga tworzenia wielu aplikacji w tym samym czasie. Na przykład, można odczytać dane z bazy danych w czasie rzeczywistym jednego projektu Firebase i mięta niestandardowych tokenów do innego projektu. Albo może chcesz uwierzytelniać dwie aplikacje z odrębnych mandatów. Firebase SDK pozwala na tworzenie wielu aplikacji w tym samym czasie, każdy z własnym informacji konfiguracyjnych.

node.js

 // Initialize the default app
admin.initializeApp(defaultAppConfig);

// Initialize another app with a different config
var otherApp = admin.initializeApp(otherAppConfig, 'other');

console.log(admin.app().name);  // '[DEFAULT]'
console.log(otherApp.name);     // 'other'

// Use the shorthand notation to retrieve the default app's services
var defaultAuth = admin.auth();
var defaultDatabase = admin.database();

// Use the otherApp variable to retrieve the other app's services
var otherAuth = otherApp.auth();
var otherDatabase = otherApp.database();
 

Jawa

 // 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);
 

Pyton

 # 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)
 

Udać się

 // 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)
} 

DO#

 // 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);
 

Ustaw zakresy dla Realtime bazy danych i uwierzytelniania

Jeśli używasz Google Compute Engine VM z Google domyślną aplikacją poświadczenia Realtime bazy danych lub uwierzytelniania, należy również ustalić odpowiednie zakresy dostępu . Realtime do bazy danych i uwierzytelniania, trzeba zakresy kończące się userinfo.email i albo cloud-platform lub firebase.database . Aby sprawdzić istniejących zakresów dostępu i zmienić je, uruchom następujące polecenia przy użyciu gcloud .

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"
 

Następne kroki

Dowiedz się o Firebase:

Dodaj funkcje Firebase do swojej aplikacji: