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,您需要為 Google Cloud 專案啟用該 API。
- 在 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"
}
]
}
本範例回應有兩個 Google Cloud 專案,可加入 Firebase 服務。請注意,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 應用程式的資料串流,系統就會在 Google Analytics 資源中,為每個 Firebase 應用程式佈建新的資料串流。請注意,系統一律會為網頁應用程式佈建新的資料串流,即使先前已經與 Analytics 資源中的資料串流建立關聯也一樣。
請參閱 Analytics 說明文件,進一步瞭解 Google 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
。