Firebase Management REST API 可讓您以程式輔助方式設定及管理 Firebase 專案,包括專案的 Firebase 資源和 Firebase 應用程式。
這份總覽說明瞭一般工作流程,可將 Firebase 資源和應用程式新增至尚未使用 Firebase 服務的現有 Google Cloud 專案。
如要瞭解特定主題,您可以直接跳到本頁的相關部分:
在按照本頁的任何步驟操作前,請務必啟用 API。
如要瞭解 Firebase Management API 的存取權管理功能,請參閱 Cloud Identity Access Management (IAM) API 說明文件。
事前準備
開始前,您必須為 Google Cloud 專案啟用 Management API,並產生存取權方塊。
為 Google Cloud 專案啟用 Management REST API
如果您尚未啟用 Firebase Management API,請先啟用這項 API,再與 Google Cloud 專案搭配使用。
- 在 Google API 控制台中開啟「Firebase Management API」頁面。
- 系統顯示提示時,請選取您的 Google Cloud 專案。
- 在 Firebase Management API 頁面上按一下「啟用」。
產生 API 存取權杖
以下是 Node.js 的範例,可用來擷取存取權權杖。
首先,如果您不在 Google Cloud 環境中,請將 GOOGLE_APPLICATION_CREDENTIALS
環境變數設為服務帳戶金鑰的路徑。
Linux 或 macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
使用 PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
接著,請使用 Firebase Admin SDK 從服務帳戶憑證取得存取權權杖:
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);
});
}
找出專案的資源名稱
您可以找到可用於新增 Firebase 服務的 Google Cloud 專案。
提出要求
呼叫 availableProjects.list
。此呼叫的請求主體必須為空白。
以下是 Node.js 要求可用 Google Cloud 專案清單的範例:
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);
}
}
結果
對 availableProjects.list
的呼叫所產生的回應主體,包含 ProjectInfo
物件的清單。如果專案清單過長,回應主體也會包含 nextPageToken
,您可以將其做為查詢參數,取得下一頁的專案。
以下是 availableProjects.list
呼叫的回應內容範例:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
這個範例回應包含兩個可新增 Firebase 服務的 Google Cloud 專案。請注意,project
欄位會提供專案在全球不重複的資源名稱。
您可以使用 availableProjects.list
回應中列出的任何 project
值,新增 Firebase 服務或新增應用程式至專案。
在下一節中,我們會使用 projects/first-gcp-project
資源名稱,將 Firebase 服務新增至 First Cloud Project
。
將 Firebase 服務新增至專案
Google Cloud 專案可充分利用 Firebase 提供的服務。在本節中,您將瞭解如何以程式設計方式將 Firebase 服務新增至現有的 Google Cloud 專案。請注意,您也可以在 Firebase 主控台中,將 Firebase 服務新增至現有的 Google Cloud 專案。
提出要求
呼叫 projects.addFirebase
。此呼叫的請求主體必須為空白。
以下是 Node.js 的範例,可將 Firebase 服務新增至 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']);
}
}
結果
呼叫 projects.addFirebase
的結果是 Operation
。您必須先讓這項作業成功執行,才能為專案呼叫其他 Firebase 相關端點。
如要確認作業是否成功,您可以對作業呼叫 operations.get
,直到 done
的值為 true
,且其 response
為 FirebaseProject
類型為止。如果作業失敗,其 error
會設為 google.rpc.Status
。
以下是 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"
}
}
}
由於 done
是 true
,而 response
類型是 FirebaseProject
,因此 Google Cloud 專案現在已具備 Firebase 服務。回應還包含新建立 FirebaseProject
的其他實用資訊,例如 projectNumber
和預設 resources
。完成後,Operation
會自動刪除。
將 Firebase 應用程式新增至專案
許多不同的應用程式都可以使用 FirebaseProject
,包括 iOS、Android 和網頁應用程式。在本節中,您將瞭解如何透過程式輔助方式,將 Firebase 應用程式新增至現有的 FirebaseProject
。請注意,您也可以在 Firebase 控制台中,將 Firebase 應用程式新增至現有的 Firebase 專案。
選取要新增至 Firebase 專案的 Firebase 應用程式類型。
將 Firebase 專案連結至 Google Analytics 帳戶 (選用)
您可以透過程式設計將現有的 Google Analytics 帳戶連結至現有的 FirebaseProject
。請注意,您也可以在「專案設定」的「整合」分頁中,將現有的 Firebase 專案連結至 Google Analytics。
對 projects.addGoogleAnalytics
的呼叫需要 analytics_resource
,可以是 analyticsAccountId
或 analyticsPropertyId
:
指定現有的
analyticsAccountId
,即可在指定帳戶中佈建新的 Google Analytics 資源,並將新資源與 Firebase 專案建立關聯。指定現有的
analyticsPropertyId
,將 Google Analytics 資源與 Firebase 專案建立關聯。
您可以在 Google Analytics 網站上找到 analyticsAccountId
和任何現有的 analyticsPropertyId
。
呼叫 projects.addGoogleAnalytics
時:
第一項檢查項目會判斷 Google Analytics 資源中是否有任何現有資料串流,與
FirebaseProject
中的任何現有 Firebase 應用程式相符 (根據與資料串流相關聯的packageName
或bundleId
)。接著,系統會根據適用情況,將資料串流和應用程式連結。請注意,這項自動連結功能僅適用於 Android 和 iOS 應用程式。如果系統找不到與 Firebase 應用程式相符的資料串流,就會為每個 Firebase 應用程式在 Google Analytics 資源中佈建新的資料串流。請注意,即使網頁應用程式先前已與 Analytics 資源中的資料串流建立關聯,系統仍會為該應用程式配置新的資料串流。
如要進一步瞭解 Google Analytics 帳戶的階層和結構,請參閱 Analytics 文件。
提出要求
呼叫 projects.addGoogleAnalytics
。
在對 project.addGoogleAnalytics
的例行呼叫要求主體中,我們會指定 Google Analytics 帳戶 analyticsAccountId
。這個呼叫會配置新的 Google Analytics 資源,並將新資源與 FirebaseProject
建立關聯。
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
以下是 Node.js 連結 Firebase 專案與 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']);
}
}
結果
呼叫 projects.addGoogleAnalytics
的結果是 Operation
。您必須先讓這項作業成功執行,才能為專案呼叫其他 Firebase 相關端點。
如要檢查作業是否成功,您可以對作業呼叫 operations.get
,直到 done
的值為 true
,且 response
為 analyticsDetails
類型為止。如果作業失敗,其 error
會設為 google.rpc.Status
。
以下是 operations.get
呼叫的回應主體:
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
由於 done
為 true,且 response
類型為 analyticsDetails
,因此 FirebaseProject
現已連結至指定的 Google Analytics 帳戶。Operation
會在完成後自動刪除。