Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Thêm SDK quản trị Firebase vào máy chủ của bạn

SDK quản trị cho phép bạn tương tác với Firebase từ các môi trường đặc quyền để thực hiện các hành động như:

  • Đọc và ghi dữ liệu Cơ sở dữ liệu thời gian thực với đầy đủ các đặc quyền của quản trị viên.
  • Gửi tin nhắn qua đám mây Firebase theo chương trình bằng cách sử dụng phương pháp đơn giản, thay thế cho các giao thức máy chủ Nhắn tin qua đám mây của Firebase.
  • Tạo và xác minh mã thông báo xác thực Firebase.
  • Truy cập các tài nguyên của Google Cloud Platform như nhóm Bộ nhớ đám mây và cơ sở dữ liệu Cloud Firestore được liên kết với các dự án Firebase của bạn.
  • Tạo bảng điều khiển quản trị đơn giản của riêng bạn để thực hiện những việc như tra cứu dữ liệu người dùng hoặc thay đổi địa chỉ email của người dùng để xác thực.

Nếu bạn quan tâm đến việc sử dụng SDK Node.js làm ứng dụng khách để truy cập người dùng cuối (ví dụ: trong máy tính để bàn Node.js hoặc ứng dụng IoT), trái ngược với quyền truy cập quản trị từ môi trường đặc quyền (như máy chủ), bạn thay vào đó phải làm theo hướng dẫn để thiết lập SDK JavaScript của ứng dụng khách .

Dưới đây là ma trận tính năng hiển thị những tính năng Firebase nào được hỗ trợ trong mỗi ngôn ngữ:

Đặc tính Node.js Java Python Đi C #
Đúc tiền mã thông báo tùy chỉnh
Xác minh mã thông báo ID
Quản lý người dùng
Kiểm soát quyền truy cập với xác nhận quyền sở hữu tùy chỉnh
Làm mới việc thu hồi mã thông báo
Nhập người dùng
Quản lý cookie phiên
Tạo liên kết hành động qua email
Quản lý cấu hình nhà cung cấp SAML / OIDC
Hỗ trợ nhiều người thuê nhà
Cơ sở dữ liệu thời gian thực *
Nhắn tin qua đám mây Firebase
FCM Multicast
Quản lý đăng ký chủ đề FCM
Lưu trữ đám mây
Cloud Firestore
Quản lý dự án
Quy tắc bảo mật
Quản lý mô hình ML
Cấu hình từ xa Firebase

Để tìm hiểu thêm về tích hợp SDK quản trị cho những mục đích sử dụng này, hãy xem tài liệu Cơ sở dữ liệu thời gian thực , FCM , Xác thựcLưu trữ đám mây tương ứng. Phần còn lại của trang này tập trung vào thiết lập cơ bản cho SDK quản trị.

Điều kiện tiên quyết

  • Đảm bảo rằng bạn có ứng dụng máy chủ.

  • Đảm bảo rằng máy chủ của bạn chạy những điều sau tùy thuộc vào SDK quản trị mà bạn sử dụng:

    • SDK quản trị Node.js - Node.js 10.10.0+
    • Quản trị viên Java SDK - Java 7+ (khuyên dùng Java 8+)
      Hỗ trợ Java 7 không được dùng nữa.
    • SDK Python dành cho quản trị viên - Python 3.5+
    • SDK dành cho quản trị viên Go - Go 1.11+
    • Admin .NET SDK - .NET Framework 4.5+ hoặc .Net Core 1.5+

Thiết lập tài khoản dịch vụ và dự án Firebase

Để sử dụng SDK quản trị Firebase, bạn sẽ cần những thứ sau:

  • Một dự án Firebase
  • Một tài khoản dịch vụ để giao tiếp với Firebase
  • Tệp cấu hình với thông tin đăng nhập tài khoản dịch vụ của bạn

Nếu bạn chưa có dự án Firebase, bạn cần tạo một dự án trong bảng điều khiển Firebase . Truy cập Tìm hiểu các dự án Firebase để tìm hiểu thêm về các dự án Firebase.

Thêm SDK

Nếu bạn đang thiết lập một dự án mới, bạn cần cài đặt SDK cho ngôn ngữ bạn chọn.

Node.js

SDK Node.js dành cho quản trị viên của Firebase khả dụng vào npm. Nếu bạn chưa có tệp package.json , hãy tạo một tệp qua npm init . Tiếp theo, cài đặt gói npm firebase-admin và lưu nó vào package.json của bạn:

$ npm install firebase-admin --save

Để sử dụng mô-đun trong ứng dụng của bạn, hãy require mô-đun đó từ bất kỳ tệp JavaScript nào:

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

Nếu bạn đang sử dụng ES2015, bạn có thể import mô-đun thay thế:

import * as admin from 'firebase-admin';

Java

SDK Java dành cho quản trị viên của Firebase được xuất bản lên kho lưu trữ trung tâm Maven. Để cài đặt thư viện, hãy khai báo nó như một phần phụ thuộc trong tệp build.gradle của bạn:

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

Nếu bạn sử dụng Maven để xây dựng ứng dụng của mình, bạn có thể thêm phần phụ thuộc sau vào pom.xml của mình:

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

Python

SDK Python dành cho quản trị viên của Firebase có sẵn qua pip . Bạn có thể cài đặt thư viện cho tất cả người dùng thông qua sudo :

$ sudo pip install firebase-admin

Hoặc, bạn có thể cài đặt thư viện chỉ cho người dùng hiện tại bằng cách chuyển --user :

$ pip install --user firebase-admin

Đi

SDK quản trị viên của Go có thể được cài đặt bằng tiện ích 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 có thể được cài đặt bằng trình quản lý gói .NET:

$ Install-Package FirebaseAdmin -Version 1.17.1

Ngoài ra, hãy cài đặt nó bằng tiện ích dòng lệnh dotnet :

$ dotnet add package FirebaseAdmin --version 1.17.1

Hoặc, bạn có thể cài đặt nó bằng cách thêm mục tham chiếu gói sau vào tệp .csproj của bạn:

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

Khởi tạo SDK

Khi bạn đã tạo dự án Firebase, bạn có thể khởi chạy SDK bằng chiến lược ủy quyền kết hợp tệp tài khoản dịch vụ của bạn cùng với Thông tin đăng nhập mặc định của ứng dụng Google .

Các dự án Firebase hỗ trợ tài khoản dịch vụ của Google, bạn có thể sử dụng tài khoản này để gọi các API máy chủ Firebase từ máy chủ ứng dụng hoặc môi trường đáng tin cậy của mình. Nếu bạn đang phát triển mã cục bộ hoặc triển khai ứng dụng của mình tại chỗ, bạn có thể sử dụng thông tin đăng nhập có được qua tài khoản dịch vụ này để cho phép các yêu cầu máy chủ.

Để xác thực tài khoản dịch vụ và cho phép nó truy cập các dịch vụ Firebase, bạn phải tạo tệp khóa riêng ở định dạng JSON.

Để tạo tệp khóa riêng tư cho tài khoản dịch vụ của bạn:

  1. Trong bảng điều khiển Firebase, mở Cài đặt> Tài khoản dịch vụ .

  2. Nhấp vào Tạo khóa riêng tư mới , sau đó xác nhận bằng cách nhấp vào Tạo khóa .

  3. Lưu trữ an toàn tệp JSON có chứa khóa.

Khi ủy quyền qua tài khoản dịch vụ, bạn có hai lựa chọn để cung cấp thông tin đăng nhập cho ứng dụng của mình. Bạn có thể đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS hoặc bạn có thể chuyển rõ ràng đường dẫn tới khóa tài khoản dịch vụ trong mã. Tùy chọn đầu tiên là an toàn hơn và được khuyến khích.

Để đặt biến môi trường:

Đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS thành đường dẫn tệp của tệp JSON có chứa khóa tài khoản dịch vụ của bạn. Biến này chỉ áp dụng cho phiên shell hiện tại của bạn, vì vậy nếu bạn mở một phiên mới, hãy đặt lại biến.

Linux hoặc macOS

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

các cửa sổ

Với PowerShell:

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

Sau khi bạn đã hoàn tất các bước trên, Thông tin đăng nhập mặc định của ứng dụng (ADC) có thể xác định ngầm thông tin đăng nhập của bạn, cho phép bạn sử dụng thông tin đăng nhập tài khoản dịch vụ khi thử nghiệm hoặc chạy trong môi trường không phải của Google.

Khởi tạo SDK như được hiển thị:

Node.js

admin.initializeApp({
  credential: admin.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()

Đi

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

Sử dụng mã thông báo làm mới OAuth 2.0

SDK quản trị viên cũng cung cấp thông tin đăng nhập cho phép bạn xác thực bằng mã thông báo làm mới 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'
});

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)

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

C #

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

Khởi tạo không có tham số

SDK cũng có thể được khởi tạo mà không cần tham số. Trong trường hợp này, SDK sử dụng Thông tin đăng nhập mặc định của ứng dụng Google và đọc các tùy chọn từ biến môi trường FIREBASE_CONFIG . Nếu nội dung của biến FIREBASE_CONFIG bắt đầu bằng { thì nó sẽ được phân tích cú pháp như một đối tượng JSON. Nếu không, SDK sẽ giả định rằng chuỗi là tên của tệp JSON chứa các tùy chọn.

Node.js

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

Java

FirebaseApp.initializeApp();

Python

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

C #

FirebaseApp.Create();

Khi nó được khởi chạy, bạn có thể sử dụng SDK quản trị để thực hiện các loại tác vụ sau:

Khởi tạo nhiều ứng dụng

Trong hầu hết các trường hợp, bạn chỉ phải khởi tạo một ứng dụng mặc định. Bạn có thể truy cập các dịch vụ từ ứng dụng đó theo hai cách tương đương:

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

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

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

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;

Một số trường hợp sử dụng yêu cầu bạn tạo nhiều ứng dụng cùng một lúc. Ví dụ: bạn có thể muốn đọc dữ liệu từ Cơ sở dữ liệu thời gian thực của một dự án Firebase và đúc mã thông báo tùy chỉnh cho một dự án khác. Hoặc bạn có thể muốn xác thực hai ứng dụng bằng thông tin đăng nhập riêng biệt. SDK Firebase cho phép bạn tạo nhiều ứng dụng cùng lúc, mỗi ứng dụng có thông tin cấu hình riêng.

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

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)

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

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

Đặt phạm vi cho Cơ sở dữ liệu thời gian thực và Xác thực

Nếu bạn đang sử dụng Máy ảo Google Compute Engine với Thông tin đăng nhập mặc định của ứng dụng Google cho Cơ sở dữ liệu hoặc Xác thực thời gian thực, hãy đảm bảo bạn cũng đặt phạm vi truy cập phù hợp. Đối với Cơ sở dữ liệu thời gian thực và Xác thực, bạn cần các phạm vi kết thúc bằng userinfo.emailcloud-platform hoặc firebase.database . Để kiểm tra các phạm vi truy cập hiện có và thay đổi chúng, hãy chạy các lệnh sau bằng 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"

Bước tiếp theo

Tìm hiểu về Firebase:

Thêm các tính năng của Firebase vào ứng dụng của bạn: