API REST quản lý Firebase cho phép thiết lập và quản lý các dự án Firebase theo chương trình, bao gồm cả tài nguyên Firebase và Ứng dụng Firebase của dự án.
Phần tổng quan này mô tả quy trình công việc chung để thêm tài nguyên và ứng dụng Firebase vào một dự án Google Cloud hiện có chưa sử dụng dịch vụ Firebase.
Bạn có thể chuyển đến các phần cụ thể trên trang này nếu chỉ muốn:
- Thêm các dịch vụ Firebase vào dự án của bạn
- Thêm ứng dụng Firebase vào dự án Firebase
- Liên kết dự án Firebase với tài khoản Google Analytics
Trước khi làm theo bất kỳ bước nào trên trang này, hãy nhớ bật API.
Để biết thông tin về cách quản lý quyền truy cập cho API Quản lý Firebase, hãy truy cập vào tài liệu về API Quản lý danh tính và quyền truy cập (IAM) trên Cloud Identity.
Trước khi bắt đầu
Trước khi bắt đầu, bạn cần bật API Quản lý cho dự án Google Cloud và tạo mã truy cập.
Bật Management REST API cho dự án Google Cloud của bạn
Nếu chưa bật, bạn cần bật API Quản lý Firebase để sử dụng với dự án Google Cloud.
- Mở trang API Quản lý Firebase trong bảng điều khiển Google API.
- Khi được nhắc, hãy chọn dự án Google Cloud của bạn.
- Nhấp vào Bật trên trang API Quản lý Firebase.
Tạo mã truy cập API
Dưới đây là ví dụ về Node.js giúp truy xuất mã truy cập của bạn.
Trước tiên, nếu bạn không ở trong môi trường Google Cloud, hãy đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS thành đường dẫn đến khoá tài khoản dịch vụ của bạn.
Linux hoặc macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
Bằng PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Sau đó, hãy sử dụng SDK của Firebase dành cho quản trị viên để lấy mã truy cập từ thông tin đăng nhập tài khoản dịch vụ của bạn:
import { initializeApp, applicationDefault } from "firebase-admin/app";
initializeApp();
async function getAccessToken() {
try {
const accessToken = await applicationDefault().getAccessToken();
return accessToken.access_token;
} catch (err) {
console.error('Unable to get access token');
console.error(err);
}
}
Tìm tên tài nguyên của dự án
Bạn có thể tìm thấy các dự án Google Cloud có thể thêm dịch vụ Firebase.
YÊU CẦU
Gọi
availableProjects.list.
Nội dung yêu cầu cho lệnh gọi này phải trống.
Dưới đây là ví dụ về Node.js để yêu cầu danh sách các dự án Google Cloud hiện có:
const fetch = require('node-fetch');
async function listProjects() {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/availableProjects';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
const projects = resp['projectInfo'];
console.log('Project total: ' + projects.length);
console.log('');
for (let i in projects) {
const project = projects[i];
console.log('Project ' + i);
console.log('ID: ' + project['project']);
console.log('Display Name: ' + project['displayName']);
console.log('');
}
} catch(err) {
console.error(err);
}
}
RESULT
Nội dung phản hồi từ lệnh gọi đến availableProjects.list chứa danh sách các đối tượng ProjectInfo. Nếu danh sách dự án quá dài, thì nội dung phản hồi cũng chứa một nextPageToken mà bạn có thể dùng làm tham số truy vấn để lấy trang dự án tiếp theo.
Dưới đây là ví dụ về nội dung phản hồi của lệnh gọi availableProjects.list:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
Câu trả lời mẫu này có hai dự án Google Cloud có thể thêm dịch vụ Firebase vào. Lưu ý rằng trường project cung cấp tên tài nguyên duy nhất trên toàn cầu cho một dự án.
Bạn có thể sử dụng bất kỳ giá trị project nào có trong phản hồi từ availableProjects.list để thêm dịch vụ Firebase hoặc thêm ứng dụng vào dự án của mình.
Trong phần tiếp theo, chúng ta sẽ thêm các dịch vụ Firebase vào First Cloud Project bằng cách sử dụng tên tài nguyên projects/first-gcp-project.
Thêm các dịch vụ Firebase vào dự án của bạn
Các dự án Google Cloud có thể tận dụng các dịch vụ do Firebase cung cấp. Trong phần này, bạn sẽ tìm hiểu cách thêm các dịch vụ Firebase vào dự án Google Cloud hiện có theo phương thức lập trình. Lưu ý rằng bạn cũng có thể thêm các dịch vụ Firebase vào dự án Google Cloud hiện có trong bảng điều khiển Firebase.
YÊU CẦU
Gọi
projects.addFirebase.
Nội dung yêu cầu cho lệnh gọi này phải trống.
Dưới đây là ví dụ về Node.js để thêm các dịch vụ Firebase vào dự án Google Cloud của bạn:
const fetch = require('node-fetch');
async function addFirebase(projectId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addFirebase';
const options = {
method: 'POST',
// Use a manual access token here since explicit user access token is required.
headers: {
'Authorization': 'Bearer ' + accessToken,
},
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RESULT
Kết quả của lệnh gọi đến projects.addFirebase là một
Operation. Trước khi bạn có thể gọi các điểm cuối khác liên quan đến Firebase cho dự án của mình, thao tác này phải thành công.
Để kiểm tra xem thao tác có thành công hay không, bạn có thể gọi
operations.get
trên thao tác cho đến khi giá trị của done là true và response của thao tác đó thuộc
loại FirebaseProject. Nếu thao tác không thành công, error của thao tác sẽ được đặt thành google.rpc.Status.
Sau đây là nội dung phản hồi của lệnh gọi operations.get:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.FirebaseProject",
"projectId": "first-cloud-project",
"projectNumber": "...",
"displayName": "First Cloud Project",
"name": "projects/first-cloud-project",
"resources": {
"hostingSite": "first-cloud-project",
"realtimeDatabaseInstance": "first-cloud-project"
}
}
}
Vì done là true và loại response là FirebaseProject, nên dự án Google Cloud hiện có các dịch vụ của Firebase. Phản hồi cũng chứa thông tin hữu ích khác về FirebaseProject mới tạo, chẳng hạn như projectNumber và resources mặc định. Operation sẽ tự động bị xoá sau khi hoàn tất.
Thêm ứng dụng Firebase vào dự án của bạn
Nhiều ứng dụng khác nhau có thể sử dụng FirebaseProject, bao gồm cả ứng dụng iOS, Android và web. Trong phần này, bạn sẽ tìm hiểu cách thêm Ứng dụng Firebase vào ứng dụng hiện có
FirebaseProject theo phương thức lập trình. Xin lưu ý rằng bạn cũng có thể thêm Ứng dụng Firebase vào dự án Firebase hiện có trong bảng điều khiển Firebase.
Chọn một loại Ứng dụng Firebase để thêm vào dự án Firebase của bạn.
iOS+
Bạn có thể thêm Ứng dụng iOS Firebase vào dự án Firebase hiện có.
YÊU CẦU
Gọi
projects.iosApps.create.
Sau đây là cách tạo nội dung yêu cầu:
Bắt buộc:
bundleId: Mã nhận dạng gói chuẩn của ứng dụng iOS như mã này xuất hiện trong Cửa hàng ứng dụng iOS.
Không bắt buộc, nhưng nên dùng:
displayName: Tên hiển thị do người dùng chỉ định cho ứng dụng. Giá trị này rất hữu ích khi bạn tìm ứng dụng sau này trong bảng điều khiển Firebase.appStoreId: Mã nhận dạng Apple được tạo tự động và do Apple chỉ định cho ứng dụng của bạn. Chỉ địnhappStoreIdnếu Apple đã chỉ định.
Trong nội dung yêu cầu cho ví dụ, chúng ta sẽ chỉ sử dụng displayName và bundleId:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
Dưới đây là ví dụ về Node.js để thêm một ứng dụng iOS Firebase vào dự án Firebase của bạn:
const fetch = require('node-fetch');
async function addIosApp(projectId, displayName, bundleId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/iosApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'bundleId': bundleId
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RESULT
Kết quả của lệnh gọi đến projects.iosApps.create là một
Operation. Trước khi bạn có thể gọi các điểm cuối khác liên quan đến Firebase cho dự án của mình, thao tác này phải thành công.
Để kiểm tra xem thao tác có thành công hay không, bạn có thể gọi operations.get trên thao tác cho đến khi giá trị của done là true và response của thao tác thuộc loại IosApp. Nếu thao tác không thành công, error của thao tác sẽ được đặt thành google.rpc.Status.
Sau đây là nội dung phản hồi của lệnh gọi operations.get:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.IosApp",
"name": "projects/first-cloud-project/iosApps/...",
"appId": "...",
"displayName": "My Firebase iOS App",
"projectId": "first-cloud-project",
"bundleId": "com.firebase.ios"
}
}
Vì done là true và loại response là IosApp, nên FirebaseProject hiện có IosApp. Phản hồi cũng chứa thông tin hữu ích khác về Ứng dụng iOS Firebase mới tạo, chẳng hạn như appId Firebase duy nhất. Operation sẽ tự động bị xoá sau khi hoàn tất.
Android
Bạn có thể thêm Ứng dụng Android Firebase vào dự án Firebase hiện có.
YÊU CẦU
Gọi
projects.androidApps.create.
Sau đây là cách tạo nội dung yêu cầu:
Bắt buộc:
packageName: Tên gói chuẩn của ứng dụng Android như tên gói sẽ xuất hiện trong Google Play Console.
Không bắt buộc, nhưng nên dùng:
displayName: Tên hiển thị do người dùng chỉ định cho ứng dụng. Giá trị này rất hữu ích khi bạn tìm ứng dụng sau này trong bảng điều khiển Firebase.
Trong phần nội dung yêu cầu cho ví dụ, chúng ta sẽ sử dụng packageName và displayName:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Dưới đây là ví dụ về Node.js để thêm một ứng dụng Android Firebase vào dự án Firebase của bạn:
const fetch = require('node-fetch');
async function addAndroidApp(projectId, displayName, packageName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/androidApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'packageName': packageName
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RESULT
Kết quả của lệnh gọi đến projects.androidApps.create là một
Operation. Trước khi bạn có thể gọi các điểm cuối khác liên quan đến Firebase cho dự án của mình, thao tác này phải thành công.
Để kiểm tra xem thao tác có thành công hay không, bạn có thể gọi
operations.get
trên thao tác cho đến khi giá trị của done là true và response của thao tác đó thuộc
loại AndroidApp. Nếu thao tác không thành công, error của thao tác sẽ được đặt thành google.rpc.Status.
Sau đây là nội dung phản hồi của lệnh gọi operations.get:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AndroidApp",
"name": "projects/first-cloud-project/androidApps/...",
"appId": "...",
"displayName": "My Firebase Android App",
"projectId": "first-cloud-project",
"packageName": "com.firebase.android"
}
}
Vì done là true và loại response là AndroidApp, nên FirebaseProject hiện có AndroidApp. Phản hồi cũng chứa các thông tin hữu ích khác về Ứng dụng Android Firebase mới tạo, chẳng hạn như appId Firebase duy nhất. Operation sẽ tự động bị xoá sau khi
hoàn tất.
Thêm chứng chỉ SHA
Bạn có thể thêm chứng chỉ SHA vào bất kỳ Ứng dụng Android Firebase hiện có nào bằng cách gọi projects.androidApps.sha.create.
Nội dung yêu cầu cho lệnh gọi phương thức này phải có trường name trống.
Kết quả của lệnh gọi này là một thực thể mới được tạo của ShaCertificate.
Khi gọi projects.androidApps.sha.create, bạn cần cung cấp hàm băm chứng chỉ SHA-1 hoặc SHA-256 hợp lệ. Bạn có thể lấy hàm băm SHA của chứng chỉ ký bằng lệnh gradle signingReport:
./gradlew signingReport
Để biết thêm thông tin, hãy truy cập vào API Google cho Android.
Web
Bạn có thể thêm Ứng dụng web Firebase vào dự án Firebase hiện có.
YÊU CẦU
Gọi
projects.webApps.create.
Sau đây là cách tạo nội dung yêu cầu:
Tùy chọn:
displayName: Tên hiển thị của ứng dụng do người dùng chỉ định. Giá trị này rất hữu ích để tìm ứng dụng của bạn sau này trong bảng điều khiển Firebase.
Không nên:
appUrls: URL đủ điều kiện nơi lưu trữ ứng dụng. Khi một Ứng dụng web Firebase được liên kết với một trang web Firebase Hosting, Firebase sẽ tự động điền các trường này, vì vậy, hãy để trống các trường này trong nội dung yêu cầu của bạn.
Chúng ta sẽ chỉ chỉ định một displayName trong nội dung yêu cầu cho ví dụ của mình:
{
"displayName": "My Firebase Web App"
}
Dưới đây là ví dụ về Node.js để thêm một Ứng dụng web Firebase vào dự án Firebase của bạn:
const fetch = require('node-fetch');
async function addWebApp(projectId, displayName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/webApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RESULT
Kết quả của lệnh gọi đến projects.webApps.create là một
Operation. Trước khi bạn có thể gọi các điểm cuối khác liên quan đến Firebase cho dự án của mình, thao tác này phải thành công.
Để kiểm tra xem thao tác có thành công hay không, bạn có thể gọi operations.get trên thao tác cho đến khi giá trị của done là true và response của thao tác thuộc loại WebApp. Nếu thao tác không thành công, error của thao tác sẽ được đặt thành google.rpc.Status.
Sau đây là nội dung phản hồi của lệnh gọi operations.get:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.WebApp",
"name": "projects/first-cloud-project/webApps/...",
"appId": "...",
"displayName": "My Firebase Web App",
"projectId": "first-cloud-project"
}
}
Vì done là true và loại response là WebApp, nên FirebaseProject hiện có WebApp. Phản hồi cũng chứa các thông tin hữu ích khác về Ứng dụng web Firebase mới tạo, chẳng hạn như appId Firebase duy nhất. Operation sẽ tự động bị xoá sau khi hoàn tất.
Liên kết dự án Firebase với tài khoản Google Analytics (Không bắt buộc)
Bạn có thể liên kết một tài khoản Google Analytics hiện có với FirebaseProject hiện có của mình theo phương thức lập trình. Xin lưu ý rằng bạn cũng có thể liên kết dự án Firebase hiện có với Google Analytics trong thẻ Tích hợp của phần Cài đặt dự án.
Lệnh gọi đến projects.addGoogleAnalytics yêu cầu analytics_resource, có thể là analyticsAccountId hoặc analyticsPropertyId:
Chỉ định một
analyticsAccountIdhiện có để cấp phép một tài sản Google Analytics mới trong tài khoản được chỉ định và liên kết tài sản mới đó với dự án Firebase của bạn.Chỉ định một
analyticsPropertyIdhiện có để liên kết tài sản Google Analytics với dự án Firebase của bạn.
Bạn có thể tìm thấy cả analyticsAccountId và mọi analyticsPropertyId hiện có trên trang web Google Analytics.
Khi bạn gọi đến số projects.addGoogleAnalytics:
Lần kiểm tra đầu tiên xác định xem có luồng dữ liệu hiện có nào trong tài sản Google Analytics tương ứng với bất kỳ Ứng dụng Firebase hiện có nào trong
FirebaseProjectcủa bạn hay không (dựa trênpackageNamehoặcbundleIdđược liên kết với luồng dữ liệu). Sau đó, các luồng dữ liệu và ứng dụng sẽ được liên kết (nếu có). Xin lưu ý rằng tính năng tự động liên kết này chỉ áp dụng cho Ứng dụng Android và Ứng dụng iOS.Nếu không tìm thấy luồng dữ liệu tương ứng cho Ứng dụng Firebase, thì các luồng dữ liệu mới sẽ được cung cấp trong tài sản Google Analytics cho mỗi Ứng dụng Firebase của bạn. Xin lưu ý rằng một luồng dữ liệu mới luôn được cung cấp cho một Ứng dụng web ngay cả khi ứng dụng đó đã được liên kết với một luồng dữ liệu trong tài sản Analytics của bạn.
Tìm hiểu thêm về hệ thống phân cấp và cấu trúc của tài khoản Google Analytics trong tài liệu về Analytics.
YÊU CẦU
Gọi
projects.addGoogleAnalytics.
Trong phần nội dung yêu cầu cho lệnh gọi mẫu đến project.addGoogleAnalytics, chúng ta sẽ chỉ định tài khoản Google Analytics analyticsAccountId. Lệnh gọi này sẽ cung cấp một tài sản Google Analytics mới và liên kết tài sản mới đó với FirebaseProject.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Dưới đây là ví dụ về Node.js để liên kết một dự án Firebase với một tài khoản Google Analytics:
const fetch = require('node-fetch');
async function addGoogleAnalytics(projectId, analyticsAccountId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addGoogleAnalytics';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'analyticsAccountId': analyticsAccountId
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RESULT
Kết quả của lệnh gọi đến projects.addGoogleAnalytics là một
Operation. Trước khi bạn có thể gọi các điểm cuối khác liên quan đến Firebase cho dự án của mình, thao tác này phải thành công.
Để kiểm tra xem thao tác có thành công hay không, bạn có thể gọi operations.get cho thao tác đó cho đến khi giá trị của done là true và response thuộc loại analyticsDetails. Nếu thao tác không thành công, error của thao tác sẽ được đặt thành google.rpc.Status.
Sau đây là nội dung phản hồi của lệnh gọi operations.get:
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
Vì done là true và loại response là analyticsDetails, nên FirebaseProject hiện đã được liên kết với tài khoản Google Analytics được chỉ định. Operation sẽ tự động bị xoá sau khi hoàn tất.