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 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ã truy cập.
Bật API REST quản lý cho dự án Google Cloud của bạn
Bạn cần bật API Quản lý Firebase để sử dụng với dự án Google Cloud nếu chưa bật.
- Mở trang API Quản lý Firebase trong bảng điều khiển API của Google.
- 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 Firebase Management API.
Tạo mã 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ị của Firebase để lấy mã truy cập từ thông tin xác thực tài khoản dịch vụ của bạn:
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ó sẵn để thêm dịch vụ Firebase.
YÊU CẦU
Gọi availableProjects.list
.
Bạn phải để trống phần nội dung yêu cầu cho lệnh gọi này.
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"
}
]
}
Phản hồi trong ví dụ này có 2 dự án Google Cloud có thể thêm dịch vụ Firebase vào các dự án đó. Xin lưu ý rằng trường project
cung cấp tên tài nguyên duy nhất trên toàn hệ thống 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 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
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ề 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']);
}
}
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
của thao tác đó 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 này cũng chứa các 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 của nó. 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 có thể sử dụng FirebaseProject
, bao gồm cả ứng dụng iOS, Android và ứng dụng 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 các ứ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.
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 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 Cài đặt dự án.
Lệnh gọi đến projects.addGoogleAnalytics
yêu cầu phải có analytics_resource
, có thể là analyticsAccountId
hoặc analyticsPropertyId
:
Hãy chỉ định một
analyticsAccountId
hiện có để cung cấp một thuộc tính Google Analytics mới trong tài khoản được chỉ định và liên kết thuộc tính mới đó với dự án Firebase của bạn.Hãy chỉ định một
analyticsPropertyId
hiện có để liên kết thuộc tính 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 hiện có nào trong tài sản Google Analytics tương ứng với mọi Ứng dụng Firebase hiện có trong
FirebaseProject
của bạn 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 các ứng dụng Firebase của bạn, thì các luồng dữ liệu mới sẽ được cấp phép trong tài sản Google Analytics cho từng Ứng dụng Firebase của bạn. 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à 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
.
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
đúng 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.