Google is committed to advancing racial equity for Black communities. See how.
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 các đặc quyền quản trị viên đầy đủ.
  • Lập trình gửi tin nhắn Firebase Cloud Messaging bằng cách sử dụng một cách tiếp cận đơn giản, thay thế cho các giao thức máy chủ Firebase Cloud Messaging.
  • 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ư xô lưu trữ đá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 hoặc ứng dụng IoT của Node.js), trái ngược với quyền truy cập của quản trị viên từ môi trường đặc quyền (như máy chủ), bạn thay vào đó nên làm theo các hướng dẫn để thiết lập SDK JavaScript của máy khách .

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

Đặc tính Node.js Java Con trăn Đi C #
Minting 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 truy cập với yêu cầ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ý phiên làm việc
Tạo liên kết hành động 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 *
Tin nhắn đám mây Firebase
FCM Multicast
Quản lý đăng ký chủ đề FCM
Lưu trữ đám mây
Đám mây lửa
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

  • Hãy chắc chắn rằng bạn có một ứng dụng máy chủ.

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

    • SDK Node.js của quản trị viên - Node.js 10.10.0+
    • SDK Java quản trị - Java 7+ (khuyên dùng Java 8+)
      Hỗ trợ Java 7 không được chấp nhận.
    • Quản trị viên SDK SDK - Python 3.5+
    • Quản trị viên SDK - Đi 1.11+
    • Quản trị viên .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 điều sau đây:

  • Dự án Firebase
  • Tài khoản dịch vụ để liên lạc với Firebase
  • Tệp cấu hình có 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 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 của Firebase có sẵn trên 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, require nó 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 quản trị 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:6.15.0'
}
 

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ụ thuộc sau vào pom.xml của mình:

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

Con trăn

SDK Python của Firebase Admin có sẵn thông 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 cho người dùng hiện tại bằng cách chuyển --user :

 $ pip install --user firebase-admin
 

Đi

Có thể cài đặt SDK quản trị viên 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.15.0
 

Hoặc, cài đặt nó bằng tiện ích dòng lệnh dotnet :

 $ dotnet add package FirebaseAdmin --version 1.15.0
 

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

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

Khởi tạo SDK

Khi bạn đã tạo dự án Firebase, bạn có thể khởi tạo 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 với Thông tin xác thực mặc định của ứng dụng Google .

Các dự án Firebase hỗ trợ các tài khoản dịch vụ của Google, mà bạn có thể sử dụng để gọi API máy chủ Firebase từ máy chủ ứng dụng hoặc môi trường đáng tin cậy. Nếu bạn đang phát triển mã cục bộ hoặc triển khai ứng dụng tại chỗ, bạn có thể sử dụng thông tin đăng nhập có được thông qua tài khoản dịch vụ này để ủy quyền cho 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 một tệp khóa riêng ở định dạng JSON.

Để tạo tệp khóa riêng 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 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 chứa khóa.

Khi ủy quyền thông 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 đường dẫn đến khóa tài khoản dịch vụ theo mã. Tùy chọn đầu tiên là an toàn hơn và được khuyến khích mạnh mẽ.

Để đặ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 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 thành các bước trên, Thông tin xác thực mặc định ứng dụng (ADC) có thể xác định ngầm định 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 kiểm tra 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 = new FirebaseOptions.Builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);
 

Con trăn

 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ị cũng cung cấp thông tin xác thực 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 = new FirebaseOptions.Builder()
    .setCredentials(GoogleCredentials.fromStream(refreshToken))
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);
 

Con trăn

 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ó tham số. Trong trường hợp này, SDK sử dụng Thông tin xác thực 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 dưới dạng đối tượng JSON. Mặt khác, SDK 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();
 

Con trăn

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

Sau khi được khởi tạo, 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ụ ngoài ứ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();
 

Con trăn

 # 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 với thông tin đăng nhập riêng. SDK Firebase cho phép bạn tạo nhiều ứng dụng cùng một 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);
 

Con trăn

 # 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 Xác thực và Cơ sở dữ liệu Thời gian thực

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