Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Dodaj pakiet Firebase Admin SDK do swojego serwera

Pakiet Admin SDK umożliwia interakcję z Firebase w uprzywilejowanych środowiskach w celu wykonywania takich czynności, jak:

  • Odczyt i zapis danych bazy danych czasu rzeczywistego z pełnymi uprawnieniami administratora.
  • Programowo wysyłaj wiadomości Firebase Cloud Messaging, korzystając z prostego, alternatywnego podejścia do protokołów serwera Firebase Cloud Messaging.
  • Wygeneruj i zweryfikuj tokeny uwierzytelniania Firebase.
  • Uzyskaj dostęp do zasobów Google Cloud Platform, takich jak zasobniki Cloud Storage i bazy danych Cloud Firestore powiązane z projektami Firebase.
  • Utwórz własną, uproszczoną konsolę administracyjną, aby np. Wyszukiwać dane użytkownika lub zmieniać adres e-mail użytkownika na potrzeby uwierzytelniania.

Jeśli chcesz używać zestawu Node.js SDK jako klienta do 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 (takiego jak serwer), Zamiast tego postępuj zgodnie z instrukcjami konfigurowania pakietu SDK JavaScript klienta .

Oto zestawienie funkcji pokazujące, jakie funkcje Firebase są obsługiwane w każdym języku:

Funkcja Node.js Jawa Pyton Iść DO#
Niestandardowe wybijanie żetonów
Weryfikacja tokena identyfikacyjnego
Zarządzanie użytkownikami
Kontrola dostępu za pomocą oświadczeń niestandardowych
Odśwież unieważnienie tokena
Importuj użytkowników
Zarządzanie plikami cookie sesji
Generowanie łączy akcji e-mail
Zarządzanie konfiguracjami dostawców SAML / OIDC
Obsługa wielu najemców
Baza danych czasu rzeczywistego *
Komunikacja w chmurze Firebase
FCM Multicast
Zarządzaj subskrypcjami tematów FCM
Magazyn w chmurze
Cloud Firestore
Zarządzanie projektami
Zasady bezpieczeństwa
Zarządzanie modelami ML
Zdalna konfiguracja Firebase

Aby dowiedzieć się więcej o integracji pakietu Admin SDK w tych zastosowaniach, zapoznaj się z odpowiednią dokumentacją bazy danych czasu rzeczywistego , FCM , uwierzytelniania i Cloud Storage . Pozostała część tej strony dotyczy podstawowej konfiguracji pakietu Admin SDK.

Wymagania wstępne

  • Upewnij się, że masz aplikację serwerową.

  • Upewnij się, że na serwerze działają następujące elementy w zależności od używanego zestawu Admin SDK:

    • Admin Node.js SDK - Node.js 10.10.0+
    • Admin Java SDK - Java 7+ (zalecana Java 8+)
      Obsługa języka Java 7 jest przestarzała.
    • Admin Python SDK - Python 3.5+
    • Admin Go SDK - Go 1.11+
    • Admin .NET SDK - .NET Framework 4.5+ lub .Net Core 1.5+

Skonfiguruj projekt i konto usługi Firebase

Aby korzystać z pakietu Firebase Admin SDK, potrzebujesz:

  • Projekt Firebase
  • Konto usługi do komunikacji z Firebase
  • Plik konfiguracyjny z poświadczeniami konta usługi

Jeśli nie masz jeszcze projektu Firebase, musisz go utworzyć w konsoli Firebase . Odwiedź artykuł Omówienie projektów Firebase, aby dowiedzieć się więcej o projektach Firebase.

Dodaj zestaw SDK

Jeśli konfigurujesz nowy projekt, musisz zainstalować SDK dla wybranego języka.

Node.js

Pakiet SDK Firebase Admin Node.js jest dostępny na npm. Jeśli nie masz jeszcze pliku package.json , utwórz go za pomocą npm init . Następnie zainstaluj pakiet firebase-admin npm i zapisz go w package.json :

$ npm install firebase-admin --save

Aby użyć modułu w swojej aplikacji, require go z dowolnego pliku JavaScript:

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

Jeśli używasz ES2015, możesz zamiast tego import moduł:

import * as admin from 'firebase-admin';

Jawa

Pakiet Firebase Admin Java SDK jest publikowany w centralnym repozytorium Maven. Aby zainstalować bibliotekę, zadeklaruj ją jako zależność w pliku build.gradle :

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

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

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

Pyton

Pakiet Firebase Admin Python SDK jest dostępny za pośrednictwem pip . Możesz zainstalować bibliotekę dla wszystkich użytkowników przez sudo :

$ sudo pip install firebase-admin

Lub możesz zainstalować bibliotekę tylko dla bieżącego użytkownika, przekazując flagę --user :

$ pip install --user firebase-admin

Iść

Pakiet Go Admin SDK można zainstalować za pomocą narzędzia go get :

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

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

DO#

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

$ Install-Package FirebaseAdmin -Version 1.17.1

Alternatywnie zainstaluj go za pomocą narzędzia wiersza polecenia dotnet :

$ dotnet add package FirebaseAdmin --version 1.17.1

Możesz też zainstalować go, dodając następujący wpis dotyczący pakietu do pliku .csproj :

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

Zainicjuj zestaw SDK

Po utworzeniu projektu Firebase możesz zainicjować pakiet SDK za pomocą strategii autoryzacji, która łączy plik konta usługi z domyślnymi danymi logowania aplikacji Google .

Projekty Firebase obsługują konta usług Google, których możesz używać do wywoływania interfejsów API serwera Firebase z serwera aplikacji lub zaufanego środowiska. Jeśli tworzysz kod lokalnie lub wdrażasz aplikację lokalnie, możesz użyć poświadczeń uzyskanych za pośrednictwem tego konta usługi, aby autoryzować żądania serwera.

Aby uwierzytelnić konto usługi i zezwolić mu na dostęp do usług Firebase, musisz wygenerować plik klucza prywatnego w formacie JSON.

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

  1. W konsoli Firebase otwórz Ustawienia> Konta usług .

  2. Kliknij opcję Generuj nowy klucz prywatny , a następnie potwierdź, klikając opcję Generuj klucz .

  3. Bezpiecznie przechowuj plik JSON zawierający klucz.

W przypadku autoryzacji za pośrednictwem konta usługi masz dwie możliwości podania poświadczeń do aplikacji. Możesz ustawić zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS lub jawnie przekazać ścieżkę do klucza konta usługi w kodzie. Pierwsza opcja jest bezpieczniejsza i jest zdecydowanie zalecana.

Aby ustawić zmienną środowiskową:

Ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS na ścieżkę do pliku JSON zawierającego klucz Twojego konta usługi. Ta zmienna dotyczy tylko bieżącej sesji powłoki, więc jeśli otworzysz nową sesję, ustaw zmienną ponownie.

Linux lub macOS

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

Windows

Z PowerShell:

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

Po wykonaniu powyższych kroków domyślne poświadczenia aplikacji (ADC) są w stanie niejawnie określić Twoje poświadczenia, umożliwiając korzystanie z poświadczeń konta usługi podczas testowania lub uruchamiania w środowiskach innych niż Google.

Zainicjuj zestaw SDK, jak pokazano:

Node.js

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

Jawa

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

FirebaseApp.initializeApp(options);

Pyton

default_app = firebase_admin.initialize_app()

Iść

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

Pakiet Admin SDK zapewnia również dane logowania, które umożliwiają uwierzytelnianie za pomocą tokena odświeżania Google OAuth2 :

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

Iść

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"),
});

Zainicjuj bez parametrów

Zestaw SDK można również zainicjować bez parametrów. W tym przypadku pakiet SDK używa domyślnych danych logowania aplikacji Google i odczytuje opcje ze zmiennej środowiskowej FIREBASE_CONFIG . Jeśli zawartość zmiennej FIREBASE_CONFIG zaczyna się od { , zostanie przeanalizowana jako obiekt JSON. W przeciwnym razie SDK zakłada, że ​​ciąg jest nazwą 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()

Iść

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

DO#

FirebaseApp.Create();

Po zainicjowaniu możesz użyć pakietu Admin SDK do wykonywania następujących typów zadań:

Zainicjuj wiele aplikacji

W większości przypadków wystarczy zainicjować jedną, domyślną aplikację. Możesz uzyskać dostęp do usług z tej aplikacji na dwa równoważne sposoby:

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

Iść

// 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 wymagają jednoczesnego tworzenia wielu aplikacji. Na przykład możesz chcieć odczytać dane z bazy danych czasu rzeczywistego jednego projektu Firebase i wykorzystać niestandardowe tokeny dla innego projektu. Lub możesz chcieć uwierzytelnić dwie aplikacje przy użyciu oddzielnych poświadczeń. Pakiet Firebase SDK umożliwia jednoczesne tworzenie wielu aplikacji, z których każda ma własne informacje konfiguracyjne.

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)

Iść

// 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 bazy danych czasu rzeczywistego i uwierzytelniania

Jeśli używasz maszyny wirtualnej Google Compute Engine z domyślnymi danymi logowania aplikacji Google dla bazy danych czasu rzeczywistego lub uwierzytelniania, upewnij się, że ustawiłeś również odpowiednie zakresy dostępu . W przypadku bazy danych czasu rzeczywistego i uwierzytelniania potrzebne są zakresy kończące się na userinfo.email i albo w cloud-platform albo w firebase.database . Aby sprawdzić istniejące zakresy dostępu i je zmienić, uruchom następujące polecenia za pomocą narzędzia 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ę więcej o Firebase:

Dodaj funkcje Firebase do swojej aplikacji: