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
如果您尚未啟用 Firebase Management 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"
}
]
}
這個範例回應有兩個 Google Cloud 專案,可新增 Firebase 服務。請注意,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 網站上找到這兩項資源,以及任何現有的analyticsAccountId
analyticsPropertyId
。
通話時間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
會在完成後自動刪除。