API REST quản lý Firebase cho phép thiết lập và quản lý có lập trình các dự án Firebase, bao gồm tài nguyên Firebase của dự án và Ứng dụng Firebase.
Tổng quan này mô tả quy trình làm 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ó hiện không sử dụng dịch vụ Firebase.
Bạn có thể chuyển đến các phần cụ thể của trang này nếu bạn 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 của bạn
- Liên kết dự án Firebase của bạn với tài khoản Google Analytics
- Hoàn thiện vị trí mặc định của dự án của bạn
Trước khi làm theo bất kỳ bước nào trên trang này, hãy đảm bảo rằng bạn bật API .
Để biết thông tin về quản lý quyền truy cập cho API quản lý Firebase, hãy truy cập tài liệu API quản lý quyền truy cập nhận dạng đá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 của mình và tạo mã thông báo truy cập của bạn .
Bật API REST quản lý cho dự án Google Cloud của bạn
Nếu chưa có, bạn sẽ cần bật API quản lý Firebase để sử dụng với dự án Google Cloud của mình.
- 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 API quản lý Firebase.
Tạo mã thông báo truy cập API của bạn
Đây là một ví dụ cho Node.js lấy mã thông báo 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 khóa 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"
các cửa sổ
Với PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Sau đó, sử dụng SDK quản trị Firebase để nhận mã truy cập từ thông tin đăng nhập 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 của bạ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
sẵnProjects.list. Nội dung yêu cầu cho cuộc gọi này phải trống.
Dưới đây là một ví dụ để 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);
}
}
KẾT QUẢ
Phần thân phản hồi từ một cuộc gọi đến availableProjects.list
chứa một danh sách các đối tượng ProjectInfo
. Nếu danh sách các dự án quá dài, nội dung phản hồi cũng chứa một nextPageToken
mà bạn có thể sử dụng làm tham số truy vấn để lấy trang tiếp theo của các dự án.
Đây là một cơ quan phản hồi ví dụ của một cuộc gọi availableProjects.list
cóProjects.list:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
Phản hồi ví dụ này có hai dự án Google Cloud có thể được thêm dịch vụ Firebase vào chúng. 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 bạn.
Trong phần tiếp theo, chúng tôi 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 của 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 dịch vụ Firebase vào dự án Google Cloud hiện có của mình theo chương 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ó của mình trong bảng điều khiển Firebase .
YÊU CẦU
Gọi projects.addFirebase
. Nội dung yêu cầu cho cuộc gọi này phải trống.
Đây là một ví dụ để Node.js thêm 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 một cuộc gọi tới 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, hoạt động 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 lệnh operations.get
vào thao tác cho đến khi giá trị của done
là true
và response
của nó thuộc loại FirebaseProject
. Nếu hoạt động không thành công, error
của nó được đặt thành google.rpc.Status
.
Đây là phần nội dung phản hồi của operations.get
gọi Operating.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ì việc done
là true
và loại response
là FirebaseProject
, 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 được tạo của bạn, như projectNumber
và các resources
mặc định của nó. Operation
sẽ tự động bị xóa sau khi hoàn thành.
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á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ó của mình theo chương trình. Lưu ý rằng bạn cũng có thể thêm Ứng dụng Firebase vào dự án Firebase hiện có của mình 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 của bạn với tài khoản Google Analytics (Tùy chọn)
Bạn có thể liên kết tài khoản Google Analytics hiện tại với FirebaseProject
hiện có của mình theo chương trình. Lưu ý rằng bạn cũng có thể liên kết dự án Firebase hiện tại của mình với Google Analytics trong tab Tích hợp của Cài đặt dự án .
Lệnh gọi tới projects.addGoogleAnalytics
project.addGoogleAnalytics yêu cầu phải có analytics_resource
, có thể là analyticsAccountId
hoặc analyticsPropertyId
:
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.Chỉ định một
analyticsPropertyId
hiện có để liên kết thuộc tính Google Analytics với dự án Firebase của bạn.
Bạn có thể tìm thấy cả analyticsAccountId
của mình và bất kỳ analyticsPropertyId
nào hiện có trên trang web Google Analytics .
Khi bạn gọi tới projects.addGoogleAnalytics
:
Lần kiểm tra đầu tiên xác định xem có bất kỳ luồng dữ liệu hiện có nào trong thuộc tính Google Analytics tương ứng với bất kỳ Ứng dụng Firebase hiện có nào trong
FirebaseProject
của bạn hay không (dựa trên tên gói hoặcpackageName
bundleId
liên kết với luồng dữ liệu). Sau đó, nếu có thể, các luồng dữ liệu và ứng dụng được liên kết với nhau. Lưu ý rằng liên kết tự động 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 nào cho Ứng dụng Firebase của bạn, thì luồng dữ liệu mới sẽ được cung cấp trong thuộc tính Google Analytics cho từng Ứng dụng Firebase của bạn. Lưu ý rằng luồng dữ liệu mới luôn được cấp phép cho Ứng dụng web ngay cả khi trước đó nó đã được liên kết với luồng dữ liệu trong thuộc tính Analytics của bạn.
Tìm hiểu thêm về phân cấp và cấu trúc của tài khoản Google Analytics trong tài liệu Analytics .
YÊU CẦU
Gọi tới projects.addGoogleAnalytics
.
Trong phần nội dung yêu cầu cho cuộc gọi mẫu của chúng tôi tới project.addGoogleAnalytics
, chúng tôi sẽ chỉ định tài khoản Google Analytics analyticsAccountId
của chúng tôi. Lệnh gọi này sẽ cung cấp thuộc tính Google Analytics mới và liên kết thuộc tính mới với FirebaseProject
.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Dưới đây là một ví dụ về 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 một lệnh gọi tới 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, hoạt động 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 lệnh operations.get
vào thao tác cho đến khi giá trị của done
là true
và response
thuộc loại analyticsDetails
. Nếu hoạt động không thành công, error
của nó được đặt thành google.rpc.Status
.
Đây là phần nội dung phản hồi của operations.get
gọi Operating.get:
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
Vì việc done
là đú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ị xóa sau khi hoàn thành.
Hoàn thiện vị trí mặc định của dự án của bạn (Tùy chọn)
Nếu dự án Firebase của bạn sử dụng Cloud Firestore, Cloud Storage hoặc ứng dụng App Engine, bạn có thể hoàn thiện vị trí tài nguyên Google Cloud Platform (GCP) mặc định cho dự án của mình theo chương trình. Lưu ý rằng bạn cũng có thể chọn một vị trí trong bảng điều khiển Firebase .
Trước khi thiết lập vị trí này, hãy kiểm tra Chọn vị trí cho dự án của bạn để biết thông tin về vị trí nào là tốt nhất cho dự án của bạn. Bạn cũng nên gọi tới projects.availableLocations
để trả về danh sách các vị trí hợp lệ cho dự án của mình vì nếu dự án của bạn là một phần của tổ chức Google Cloud, thì các chính sách tổ chức của bạn có thể hạn chế vị trí nào hợp lệ cho dự án của bạn.
Việc gọi phương thức defaultLocation.finalize
này sẽ tạo ra một ứng dụng App Engine với bộ chứa Cloud Storage mặc định nằm trong locationId
mà bạn cung cấp trong phần thân yêu cầu.
Vị trí tài nguyên GCP mặc định có thể đã được chỉ định nếu Project
đã có ứng dụng App Engine hoặc phương thức defaultLocation.finalize
này đã được gọi trước đó.
YÊU CẦU
Gọi projects.defaultLocation.finalize
. Đây là cách tạo phần thân yêu cầu của bạn:
Yêu cầu:
-
locationId
: Vị trí nơi dữ liệu của bạn được lưu trữ cho các dịch vụ GCP yêu cầu cài đặt vị trí, như Cloud Firestore hoặc Cloud Storage.
-
{
"locationId": "us-west2"
}
Đây là một ví dụ cho Node.js để hoàn thiện vị trí mặc định của dự án của bạn:
const fetch = require('node-fetch');
async function finalizeProjectLocation(projectId, locationId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/defaultLocation:finalize';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'locationId': locationId
}),
};
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 một lệnh gọi tới projects.defaultLocation.finalize
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, hoạt động 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 lệnh operations.get
vào thao tác cho đến khi giá trị của done
là true
và response
của nó thuộc loại google.protobuf.Empty
. Nếu thao tác không thành công, error
nội dung phản hồi sẽ thuộc loại google.rpc.Status
. Operation
sẽ tự động bị xóa sau khi hoàn thành.