Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Tambahkan Firebase Admin SDK ke server Anda

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Admin SDK adalah sekumpulan pustaka server yang memungkinkan Anda berinteraksi dengan Firebase dari lingkungan istimewa untuk melakukan tindakan seperti:

  • Membaca dan menulis data Realtime Database dengan hak istimewa admin penuh.
  • Secara terprogram mengirim pesan Firebase Cloud Messaging menggunakan pendekatan alternatif sederhana ke protokol server Firebase Cloud Messaging.
  • Buat dan verifikasi token autentikasi Firebase.
  • Akses resource Google Cloud seperti bucket Cloud Storage dan database Cloud Firestore yang terkait dengan project Firebase Anda.
  • Buat konsol admin Anda sendiri yang disederhanakan untuk melakukan hal-hal seperti mencari data pengguna atau mengubah alamat email pengguna untuk autentikasi.

Jika Anda tertarik menggunakan Node.js SDK sebagai klien untuk akses pengguna akhir (misalnya, di desktop Node.js atau aplikasi IoT), bukan akses admin dari lingkungan istimewa (seperti server), Anda sebagai gantinya harus mengikuti petunjuk untuk menyiapkan klien JavaScript SDK .

Berikut adalah matriks fitur yang menunjukkan fitur Firebase yang didukung di setiap bahasa:

Fitur Node.js Jawa Piton Pergi C#
Pencetakan Token Kustom
Verifikasi Token ID
manajemen pengguna
Kontrol Akses Dengan Klaim Khusus
Perbarui Pencabutan Token
Impor Pengguna
Manajemen Cookie Sesi
Membuat Tautan Tindakan Email
Mengelola konfigurasi penyedia SAML/OIDC
Dukungan multi-penyewa
Basis Data Waktu Nyata *
Perpesanan Cloud Firebase
Multicast FCM
Kelola Langganan Topik FCM
Penyimpanan awan
Toko Api Awan
Manajemen proyek
Aturan Keamanan
Manajemen Model ML
Konfigurasi Jarak Jauh Firebase
Pemeriksaan Aplikasi Firebase
Ekstensi Firebase

Untuk mempelajari lebih lanjut integrasi Admin SDK untuk penggunaan ini, lihat dokumentasi Realtime Database , FCM , Authentication , Remote Config , dan Cloud Storage terkait. Bagian selanjutnya dari halaman ini berfokus pada penyiapan dasar untuk Admin SDK.

Prasyarat

  • Pastikan Anda memiliki aplikasi server.

  • Pastikan server Anda menjalankan hal berikut bergantung pada Admin SDK mana yang Anda gunakan:

    • Admin Node.js SDK — Node.js 14+
    • Admin Java SDK — Java 8+
    • Admin Python SDK — Python 3.6+ (merekomendasikan Python 3.7+)
    • SDK Admin Go — Mulai 1.15+
    • Admin .NET SDK — .NET Framework 4.6.1+ atau .NET Standard 2.0 untuk .Net Core 2.0+

Siapkan proyek Firebase dan akun layanan

Untuk menggunakan Firebase Admin SDK, Anda memerlukan hal berikut:

  • Proyek Firebase.
  • Akun layanan Firebase Admin SDK untuk berkomunikasi dengan Firebase. Akun layanan ini dibuat secara otomatis saat Anda membuat project Firebase atau menambahkan Firebase ke project Google Cloud.
  • File konfigurasi dengan kredensial akun layanan Anda.

Jika Anda belum memiliki proyek Firebase, Anda harus membuatnya di konsol Firebase . Kunjungi Memahami Proyek Firebase untuk mempelajari lebih lanjut tentang proyek Firebase.

Tambahkan SDK

Jika Anda menyiapkan proyek baru, Anda perlu memasang SDK untuk bahasa pilihan Anda.

Node.js

Firebase Admin Node.js SDK tersedia di npm. Jika Anda belum memiliki file package.json , buatlah melalui npm init . Selanjutnya, instal paket firebase-admin dan simpan ke package.json Anda:

npm install firebase-admin --save

Untuk menggunakan modul dalam aplikasi Anda, require dari file JavaScript apa pun:

const { initializeApp } = require('firebase-admin/app');

Jika Anda menggunakan ES2015, Anda dapat import modul:

import { initializeApp } from 'firebase-admin/app';

Jawa

Firebase Admin Java SDK dipublikasikan ke repositori pusat Maven. Untuk menginstal library, deklarasikan sebagai dependensi di file build.gradle Anda:

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

Jika Anda menggunakan Maven untuk membuat aplikasi, Anda dapat menambahkan dependensi berikut ke pom.xml Anda:

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

Piton

Firebase Admin Python SDK tersedia melalui pip . Anda dapat menginstal perpustakaan untuk semua pengguna melalui sudo :

sudo pip install firebase-admin

Atau, Anda dapat menginstal pustaka hanya untuk pengguna saat ini dengan meneruskan flag --user :

pip install --user firebase-admin

Pergi

Go Admin SDK dapat diinstal menggunakan utilitas go get :

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

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

C#

.NET Admin SDK dapat diinstal menggunakan pengelola paket .NET:

Install-Package FirebaseAdmin -Version 2.3.0

Atau, instal menggunakan utilitas baris perintah dotnet :

dotnet add package FirebaseAdmin --version 2.3.0

Atau, Anda dapat menginstalnya dengan menambahkan entri referensi paket berikut ke file .csproj Anda:

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

Inisialisasi SDK

Setelah Anda membuat proyek Firebase, Anda dapat menginisialisasi SDK dengan strategi otorisasi yang menggabungkan file akun layanan Anda bersama dengan Kredensial Default Aplikasi Google .

Proyek Firebase mendukung akun layanan Google , yang dapat Anda gunakan untuk memanggil API server Firebase dari server aplikasi atau lingkungan tepercaya. Jika Anda mengembangkan kode secara lokal atau menerapkan aplikasi secara lokal, Anda dapat menggunakan kredensial yang diperoleh melalui akun layanan ini untuk mengotorisasi permintaan server.

Untuk mengautentikasi akun layanan dan mengotorisasinya untuk mengakses layanan Firebase, Anda harus membuat file kunci pribadi dalam format JSON.

Untuk menghasilkan file kunci pribadi untuk akun layanan Anda:

  1. Di konsol Firebase, buka Pengaturan > Akun Layanan .

  2. Klik Generate New Private Key , lalu konfirmasikan dengan mengklik Generate Key .

  3. Simpan file JSON yang berisi kunci dengan aman.

Saat memberi otorisasi melalui akun layanan, Anda memiliki dua pilihan untuk memberikan kredensial ke aplikasi Anda. Anda dapat menyetel variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS , atau secara eksplisit meneruskan jalur ke kunci akun layanan dalam kode. Opsi pertama lebih aman dan sangat disarankan.

Untuk mengatur variabel lingkungan:

Setel variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file dari file JSON yang berisi kunci akun layanan Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini, jadi jika Anda membuka sesi baru, atur kembali variabel tersebut.

Linux atau macOS

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

Windows

Dengan PowerShell:

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

Setelah Anda menyelesaikan langkah-langkah di atas, Application Default Credentials (ADC) dapat menentukan kredensial Anda secara implisit, memungkinkan Anda menggunakan kredensial akun layanan saat menguji atau menjalankan di lingkungan non-Google.

Inisialisasi SDK seperti yang ditunjukkan:

Node.js

initializeApp({
    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);

Piton

default_app = firebase_admin.initialize_app()

Pergi

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

Menggunakan token penyegaran OAuth 2.0

SDK Admin juga menyediakan kredensial yang memungkinkan Anda mengautentikasi dengan token penyegaran Google OAuth2 :

Node.js

const myRefreshToken = '...'; // Get refresh token from OAuth2 flow

initializeApp({
  credential: refreshToken(myRefreshToken),
  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);

Piton

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

Pergi

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 = GoogleCredential.FromFile("path/to/refreshToken.json"),
});

Inisialisasi tanpa parameter

SDK juga dapat diinisialisasi tanpa parameter. Dalam hal ini, SDK menggunakan Kredensial Default Aplikasi Google . Karena pencarian kredensial default sepenuhnya otomatis di lingkungan Google, tanpa perlu menyediakan variabel lingkungan atau konfigurasi lainnya, cara menginisialisasi SDK ini sangat disarankan untuk aplikasi yang berjalan di Compute Engine, Kubernetes Engine, App Engine, dan Cloud Functions.

Untuk menentukan opsi inisialisasi secara opsional untuk layanan seperti Realtime Database, Cloud Storage, atau Cloud Functions, gunakan variabel lingkungan FIREBASE_CONFIG . Jika konten variabel FIREBASE_CONFIG dimulai dengan { maka akan diuraikan sebagai objek JSON. Kalau tidak, SDK menganggap bahwa string adalah jalur file JSON yang berisi opsi.

Node.js

const app = initializeApp();

Jawa

FirebaseApp.initializeApp();

Piton

default_app = firebase_admin.initialize_app()

Pergi

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

C#

FirebaseApp.Create();

Setelah diinisialisasi, Anda dapat menggunakan Admin SDK untuk menyelesaikan jenis tugas berikut:

Inisialisasi beberapa aplikasi

Dalam kebanyakan kasus, Anda hanya perlu menginisialisasi satu aplikasi default. Anda dapat mengakses layanan dari aplikasi itu dengan dua cara yang setara:

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

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

Piton

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

Pergi

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

Beberapa kasus penggunaan mengharuskan Anda membuat beberapa aplikasi sekaligus. Misalnya, Anda mungkin ingin membaca data dari Realtime Database dari satu proyek Firebase dan membuat token khusus untuk proyek lainnya. Atau Anda mungkin ingin mengautentikasi dua aplikasi dengan kredensial terpisah. Firebase SDK memungkinkan Anda membuat beberapa aplikasi sekaligus, masing-masing dengan informasi konfigurasinya sendiri.

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

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

Piton

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

Pergi

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

Tetapkan cakupan untuk Realtime Database dan Authentication

Jika Anda menggunakan VM Google Compute Engine dengan Kredensial Default Aplikasi Google untuk Database atau Autentikasi Realtime, pastikan juga menyetel cakupan akses yang tepat . Untuk Realtime Database dan Authentication, Anda memerlukan cakupan yang diakhiri dengan userinfo.email dan cloud-platform atau firebase.database . Untuk memeriksa cakupan akses yang ada dan mengubahnya, jalankan perintah berikut menggunakan 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"

Menguji dengan kredensial pengguna akhir gcloud

Saat menguji Admin SDK secara lokal dengan Google Application Default Credentials yang diperoleh dengan menjalankan gcloud auth application-default login , perubahan tambahan diperlukan untuk menggunakan Firebase Authentication karena hal berikut:

  • Firebase Authentication tidak menerima kredensial pengguna akhir gcloud yang dibuat menggunakan ID klien gcloud OAuth.
  • Firebase Authentication mengharuskan ID proyek diberikan saat inisialisasi untuk jenis kredensial pengguna akhir ini.

Sebagai solusinya, Anda dapat membuat Kredensial Default Aplikasi Google di gcloud menggunakan ID klien OAuth 2.0 Anda sendiri. ID klien OAuth harus berupa jenis aplikasi aplikasi Desktop .

gcloud

gcloud auth application-default login --client-id-file=[/path/to/client/id/file]

Anda dapat menentukan ID proyek secara eksplisit pada inisialisasi aplikasi atau cukup gunakan variabel lingkungan GOOGLE_CLOUD_PROJECT . Yang terakhir menghindari kebutuhan untuk membuat perubahan tambahan untuk menguji kode Anda.

Untuk menentukan ID proyek secara eksplisit:

Node.js

import { initializeApp, applicationDefault } from 'firebase-admin/app';

initializeApp({
  credential: applicationDefault(),
  projectId: '<FIREBASE_PROJECT_ID>',
});

Jawa

FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .setProjectId("<FIREBASE_PROJECT_ID>")
    .build();

FirebaseApp.initializeApp(options);

Piton

app_options = {'projectId': '<FIREBASE_PROJECT_ID>'}
default_app = firebase_admin.initialize_app(options=app_options)

Pergi

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

Langkah selanjutnya

Pelajari tentang Firebase:

Tambahkan fitur Firebase ke aplikasi Anda: