API REST Quản lý Firebase cho phép thiết lập và quản lý các dự án Firebase theo phương thức lập trình, bao gồm cả tài nguyên Firebase và Ứng dụng Firebase của dự án.
Thông tin 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 các dịch vụ của 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
- 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ý quyền truy cập danh tính trên đám mây (IAM).
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ã thông báo truy cập.
Bật API REST quản lý cho dự án Google Cloud
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 Firebase Management API (API quản lý Firebase) trong Google API Console.
- Khi được nhắc, hãy chọn dự án Google Cloud.
- Nhấp vào Bật trên trang Firebase Management API.
Tạo mã thông báo truy cập API
Dưới đây là ví dụ về cách Node.js 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ụ.
Linux hoặc macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
Với PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Sau đó, hãy sử dụng SDK Quản trị Firebase để lấy mã thông báo truy cập từ thông tin xác thực tài khoản dịch vụ:
const admin = require('firebase-admin');
function getAccessToken() {
return admin.credential.applicationDefault().getAccessToken()
.then(accessToken => {
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 các 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ề cách Node.js yêu cầu danh sách các dự án Google Cloud có sẵn:
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);
}
}
KẾT QUẢ
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, 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 để nhận trang tiếp theo của dự án.
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"
}
]
}
Nội dung phản hồi mẫu này có hai dự án Google Cloud có thể thêm các dịch vụ Firebase vào. Xin 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 liệt kê 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 tên tài nguyên projects/first-gcp-project
.
Thêm các dịch vụ Firebase vào dự á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. Xin 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ề cách Node.js thêm các dịch vụ Firebase vào dự án Google Cloud:
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']);
}
}
KẾT QUẢ
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
sẽ được đặt thành google.rpc.Status
.
Dưới đâ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ụ 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
Nhiều ứng dụng 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 FirebaseProject
hiện có bằng cách 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.
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ó 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 một analytics_resource
, có thể là analyticsAccountId
hoặc analyticsPropertyId
:
Chỉ định một
analyticsAccountId
hiện có để cấp phép một tài sản Google Analytics mới trong tài khoản đã 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
analyticsPropertyId
hiện có để liên kết tài sản Google Analytics với dự án Firebase.
Bạn có thể tìm thấy cả analyticsAccountId
và mọi analyticsPropertyId
hiện có trên trang web của Google Analytics.
Khi bạn gọi projects.addGoogleAnalytics
:
Bước kiểm tra đầu tiên xác định xem có luồng dữ liệu nào hiện có trong tài sản Google Analytics tương ứng với Ứng dụng Firebase hiện có nào trong
FirebaseProject
hay không (dựa trênpackageName
hoặ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ì hệ thống sẽ cấp luồng dữ liệu mới trong tài sản Google Analytics cho từng Ứng dụng Firebase. Xin lưu ý rằng luồng dữ liệu mới luôn được cấp cho Ứng dụng web ngay cả khi trước đó ứng dụng đó được liên kết với một luồng dữ liệu trong tài sản Analytics.
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 của 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ẽ 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ề cách Node.js liên kết dự án Firebase với 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']);
}
}
KẾT QUẢ
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
trên 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
sẽ được đặt thành google.rpc.Status
.
Dưới đâ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 đã chỉ định. Operation
sẽ tự động bị xoá sau khi hoàn tất.