Firebase Management REST API 可讓您以程式輔助方式設定及管理 Firebase 專案,包括專案的 Firebase 資源和 Firebase 應用程式。
本總覽說明將 Firebase 資源和應用程式新增至現有Google Cloud專案的一般工作流程,該專案目前尚未使用 Firebase 服務。
如要瞭解特定主題,請直接前往以下章節:
按照本頁的任何步驟操作前,請務必啟用 API。
如要瞭解如何管理 Firebase Management API 的存取權,請參閱 Cloud Identity Access Management (IAM) API 說明文件。
事前準備
開始前,請先為 Google Cloud 專案啟用 Management API,並產生存取權杖。
為 Google Cloud 專案啟用 Management REST API
如果尚未啟用,請先啟用 Google Cloud 專案的 Firebase Management 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 從服務帳戶憑證取得存取權杖:
import { initializeApp, applicationDefault } from "firebase-admin/app";
initializeApp();
async function getAccessToken() {
try {
const accessToken = await applicationDefault().getAccessToken();
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 欄位提供專案的全域不重複資源名稱。
您可以從回應中列出的任何 project值,availableProjects.list將 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 應用程式類型。
iOS+
您可以將 Firebase iOS 應用程式新增至現有的 Firebase 專案。
提出要求
呼叫 projects.iosApps.create。
以下說明如何建構要求主體:
必要:
bundleId:iOS 應用程式的標準軟體包 ID,會顯示在 iOS App Store 中。
選用,但建議使用:
displayName:使用者指派的應用程式顯示名稱。這個值有助於日後在 Firebase 控制台中尋找應用程式。appStoreId:Apple 自動產生並指派給應用程式的 Apple ID。如果 Apple 已指派appStoreId,請指定該值。
在範例的要求主體中,我們只會使用 displayName 和 bundleId:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
以下是 Node.js 的範例,說明如何將 Firebase iOS 應用程式新增至 Firebase 專案:
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']);
}
}
結果
呼叫 projects.iosApps.create 的結果為 Operation。您必須先成功執行這項作業,才能為專案呼叫其他 Firebase 相關端點。
如要檢查作業是否成功,您可以對作業呼叫 operations.get,直到 done 的值為 true,且 response 的類型為 IosApp 為止。如果作業失敗,其 error 會設為 google.rpc.Status。
以下是 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"
}
}
由於 done 是 true,而 response 類型是 IosApp,因此 FirebaseProject 現在具有 IosApp。回應中也會包含新建立的 Firebase iOS 應用程式的其他實用資訊,例如專屬的 Firebase appId。Operation會在完成後自動刪除。
Android
您可以將 Firebase Android 應用程式新增至現有的 Firebase 專案。
提出要求
呼叫 projects.androidApps.create。
以下說明如何建構要求主體:
必要:
packageName:Android 應用程式的標準套件名稱,會顯示在 Google Play 管理中心。
選用,但建議使用:
displayName:使用者指派的應用程式顯示名稱。這個值有助於日後在 Firebase 控制台中尋找應用程式。
在範例的要求主體中,我們會使用 packageName 和 displayName:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
以下是 Node.js 的範例,說明如何將 Firebase Android 應用程式新增至 Firebase 專案:
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']);
}
}
結果
呼叫 projects.androidApps.create 的結果為 Operation。您必須先成功執行這項作業,才能為專案呼叫其他 Firebase 相關端點。
如要檢查作業是否成功,您可以對作業呼叫 operations.get,直到 done 的值為 true,且 response 的類型為 AndroidApp 為止。如果作業失敗,其 error 會設為 google.rpc.Status。
以下是 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"
}
}
由於 done 是 true,而 response 類型是 AndroidApp,因此 FirebaseProject 現在具有 AndroidApp。回應中也會包含新建立的 Firebase Android 應用程式的其他實用資訊,例如專屬的 Firebase appId。Operation會在完成後自動刪除。
新增 SHA 憑證
您可以呼叫 projects.androidApps.sha.create,將 SHA 憑證新增至任何現有的 Firebase Android 應用程式。這個方法呼叫的要求主體必須有空白的 name 欄位。
這項呼叫的結果是新建立的 ShaCertificate 執行個體。
呼叫 projects.androidApps.sha.create 時,您需要提供有效的 SHA-1 或 SHA-256 憑證雜湊。您可以使用 gradle signingReport 指令,取得簽署憑證的 SHA 雜湊:
./gradlew signingReport
詳情請參閱 Android 適用的 Google API。
網頁版
您可以將 Firebase 網頁應用程式新增至現有的 Firebase 專案。
提出要求
呼叫 projects.webApps.create。
以下說明如何建構要求主體:
選用:
displayName:使用者指派的應用程式顯示名稱。這個值有助於日後在 Firebase 控制台中找到應用程式。
不建議使用:
appUrls:應用程式的完整網址。如果 Firebase 網頁應用程式與 Firebase Hosting 網站建立關聯,Firebase 會自動填入這些欄位,因此請在要求主體中將這些欄位留空。
在我們的範例中,我們只會在要求主體中指定 displayName:
{
"displayName": "My Firebase Web App"
}
以下是 Node.js 的範例,說明如何將 Firebase 網頁應用程式新增至 Firebase 專案:
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']);
}
}
結果
呼叫 projects.webApps.create 的結果為 Operation。您必須先成功執行這項作業,才能為專案呼叫其他 Firebase 相關端點。
如要檢查作業是否成功,您可以對作業呼叫 operations.get,直到 done 的值為 true,且 response 的類型為 WebApp 為止。如果作業失敗,其 error 會設為 google.rpc.Status。
以下是 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"
}
}
由於 done 為 true,且 response 類型為 WebApp,因此 FirebaseProject 現在具有 WebApp。回應中也會包含新建立的 Firebase 網頁應用程式的其他實用資訊,例如專屬的 Firebase appId。Operation會在完成後自動刪除。
將 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 網站上找到這兩項程式碼片段,以及任何現有的程式碼片段。analyticsAccountIdanalyticsPropertyId
通話時間projects.addGoogleAnalytics:
第一次檢查會判斷 Google Analytics 資源中是否有任何現有資料串流,對應至
FirebaseProject中的任何現有 Firebase 應用程式 (根據與資料串流相關聯的packageName或bundleId)。然後視情況連結資料串流和應用程式。請注意,這項自動連結功能僅適用於 Android 和 iOS 應用程式。如果系統找不到 Firebase 應用程式的對應資料串流,就會在 Google Analytics 資源中,為每個 Firebase 應用程式佈建新的資料串流。請注意,即使網站/應用程式先前與 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會在完成後自動刪除。