Firebase Management REST API 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ả các tài nguyên Firebase và Ứng dụng Firebase của một dự án.
Thông tin tổng quan này mô tả quy trình chung để thêm các tài nguyên và ứng dụng Firebase vào một Google Clouddự án 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 của bạn
- Thêm ứng dụng Firebase vào dự án Firebase
- Liên kết dự án Firebase với một 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 Firebase Management API, hãy truy cập vào tài liệu về Cloud Identity Access Management (IAM) API.
Trước khi bắt đầu
Trước khi bắt đầu, bạn cần bật Management API cho dự án Google Cloud và tạo mã truy cập.
Bật Management REST API cho dự án Google Cloud
Nếu chưa thực hiện, bạn cần bật Firebase Management API để sử dụng với dự án Google Cloud của mình.
- Mở trang Firebase Management API 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 Firebase Management API.
Tạo mã thông báo truy cập API
Dưới đây là ví dụ về 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ụ của bạn.
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 dùng Firebase Admin SDK để lấy 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
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.
Sau đâ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);
}
}
KẾT QUẢ
Phần nội dung phản hồi từ một lệnh gọi đến availableProjects.list
chứa một danh sách các đối tượng ProjectInfo
. Nếu danh sách dự án quá dài, phần 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 dự án tiếp theo.
Sau đâ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 mẫu này có 2 dự án Google Cloud mà bạn có thể thêm các dịch vụ của 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 các 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ụ của 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ề Node.js để thêm các dịch vụ của 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à 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ó 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 một 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 này cũng chứa các thông tin hữu ích khác về FirebaseProject
mà bạn vừa tạo, chẳng hạn như projectNumber
và resources
mặc định của FirebaseProject
đó. Tệp 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 chương trình FirebaseProject
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 Ứ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 Firebase dành cho iOS 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 iOS App Store.
Bạn nên (không bắt buộc):
displayName
: Tên hiển thị do người dùng chỉ định của ứng dụng. Giá trị này hữu ích khi tìm ứng dụng sau này trong bảng điều khiển Firebase.appStoreId
: Mã Apple được Apple chỉ định tự động cho ứng dụng của bạn. Chỉ định mộtappStoreId
nếu Apple đã chỉ định mã này.
Trong phần nội dung yêu cầu của ví dụ, chúng ta sẽ chỉ sử dụng displayName
và bundleId
:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
Sau đây là ví dụ về Node.js để thêm một Ứng dụng Firebase dành cho iOS 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']);
}
}
KẾT QUẢ
Kết quả của lệnh gọi đến projects.iosApps.create
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
có kiểu 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 một 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 này cũng chứa những thông tin hữu ích khác về Ứng dụng Firebase iOS mà bạn vừa tạo, chẳng hạn như appId
duy nhất của Firebase. Operation
sẽ tự động bị xoá sau khi hoàn tất.
Android
Bạn có thể thêm một Ứ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 này xuất hiện trong Google Play Console.
Bạn nên (không bắt buộc):
displayName
: Tên hiển thị do người dùng chỉ định cho ứng dụng. Giá trị này hữu ích khi bạn tìm ứng dụng của mình sau này trong bảng điều khiển Firebase.
Trong nội dung yêu cầu cho ví dụ này, chúng ta sẽ sử dụng packageName
và displayName
:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Sau đâ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']);
}
}
KẾT QUẢ
Kết quả của lệnh gọi đến projects.androidApps.create
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
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 một 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 này cũng chứa những thông tin hữu ích khác về Ứng dụng Android Firebase mà bạn vừa 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 phiên bản mới được tạo của ShaCertificate
.
Khi gọi projects.androidApps.sha.create
, bạn cần cung cấp một 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 signingReport
của gradle:
./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ị do người dùng chỉ định của ứng dụng. Giá trị này hữu ích khi bạn tìm ứng dụng của mình sau này trong bảng điều khiển Firebase.
Không nên:
appUrls
: URL đủ điều kiện nơi ứng dụng được lưu trữ. 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 sẵ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.
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"
}
Sau đâ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']);
}
}
KẾT QUẢ
Kết quả của lệnh gọi đến projects.webApps.create
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
có kiểu 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 một 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 này cũng chứa những thông tin hữu ích khác về Ứng dụng web Firebase mà bạn vừa 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 một 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 chương trình FirebaseProject
hiện có theo cách 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ó để cung cấ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 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
:
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 bất kỳ Ứ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 đó, nếu có thể, các luồng dữ liệu và ứng dụng sẽ được liên kết. Xin lưu ý rằng tính nă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 cho các ứng dụng Firebase của bạn, thì các luồng dữ liệu mới sẽ được cung cấp trong tài sản Google Analytics cho từng ứ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 Ứng dụng web, ngay cả khi ứng dụng đó trước đây đượ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 Analytics.
YÊU CẦU
Gọi
projects.addGoogleAnalytics
.
Trong nội dung yêu cầu cho lệnh gọi ví dụ đế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>"
}
Sau đâ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']);
}
}
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
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 một 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.