Firebase Management REST API 會啟用 程式化設定及管理 Firebase 專案,包括專案的 Firebase 資源和 Firebase 應用程式。
本總覽說明新增 Firebase 資源和新增 Firebase 資源的一般工作流程 將應用程式轉移到現有 Google Cloud 專案 但目前未採用 Firebase 服務的客戶
如果你只是想要:
在執行這個頁面的任何步驟前, 啟用 API。
如要進一步瞭解 Firebase Management API 的存取權管理,請前往 Cloud Identity Access Management (IAM) API 說明文件。
事前準備
開始之前,您需要為以下項目啟用 Management API: 您的 Google Cloud 專案和 產生存取權杖。
為 Google Cloud 專案啟用 Management REST API
這項作業必須啟用 Firebase 管理 API 以用於 Google Cloud 專案
- 開啟 Firebase 管理 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 專案 免費 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
如需儲存大量結構化物件
建議使用 Cloud Bigtable如果專案清單過長,回應主體也會包含
nextPageToken
,且可當做查詢參數使用,以取得下一頁
Google Cloud 的 Resource Manager 工具
經特別設計,能以程式輔助方式協助您管理專案
以下是 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 服務,或
在專案中新增應用程式。
在下一節中,我們將使用以下程式碼將 Firebase 服務新增至 First Cloud Project
projects/first-gcp-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 專案中新增 Firebase Android 應用程式。
提出要求
致電
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 憑證
如要將 SHA 憑證新增至任何現有的 Firebase Android 應用程式,請呼叫
projects.androidApps.sha.create
。
這個方法呼叫的要求主體必須包含空白的 name
欄位。
這個呼叫的結果是新建立的
ShaCertificate
。
呼叫 projects.androidApps.sha.create
時,您需要提供有效的
SHA-1 或 SHA-256 憑證雜湊。取得簽名的 SHA 雜湊
來使用 Gradle signingReport
指令:
./gradlew signingReport
詳情請參閱 Google API for Android:
將 Firebase 專案連結至 Google Analytics 帳戶 (選用)
你可以連結現有
現有的 Google Analytics 帳戶
FirebaseProject
。請注意,你也可以連結現有帳戶
將 Firebase 專案遷移至 Google Analytics
整合
「專案設定」分頁。
呼叫 projects.addGoogleAnalytics
需要 analytics_resource
。
可以是 analyticsAccountId
或 analyticsPropertyId
:
指定現有「
analyticsAccountId
」來佈建新的 Google Analytics 並將該資源與 Firebase 專案。指定現有的
analyticsPropertyId
,以便與 Google Analytics 建立關聯 連結資源與 Firebase 專案
你可以同時找到自己的analyticsAccountId
和
在 Google Analytics 中使用 analyticsPropertyId
網站。
呼叫 projects.addGoogleAnalytics
時:
第一項檢查可決定 Google Cloud 中是否有任何現有的資料串流 Analytics 資源會與帳戶中現有的 Firebase 應用程式相對應
FirebaseProject
(根據與以下項目相關聯的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
」。
完成專案的預設位置 (選用)
如果您的 Firebase 專案將使用 Cloud Firestore、Cloud Storage 或 是 App Engine 應用程式,您就可以完成預設的 Google Cloud 平台 (GCP) 資源位置 以程式輔助的方式處理專案請注意,您也可以選取 這個 Firebase 控制台。
設定這個地點前,請先參閱「選取您的
專案,以瞭解哪個位置最適合
。另請注意,
projects.availableLocations
敬上
傳回專案的有效位置清單
屬於 Google Cloud 機構的一部分,那麼您的機構政策
可能會限制
都是有效的專案名稱
呼叫此 defaultLocation.finalize
方法可建立 App Engine
指定預設 Cloud Storage 應用程式
值區
位於
locationId
您在要求主體中提供的圖片
如果
「Project
」已有「App Engine」應用程式,或者
先前呼叫了 defaultLocation.finalize
方法。
提出要求
致電
projects.defaultLocation.finalize
。
建構要求主體的方法如下:
必要:
locationId
:GCP 服務資料的儲存位置 需要位置資訊設定,例如 Cloud Firestore 或 Cloud Storage。
{
"locationId": "us-west2"
}
下列範例顯示 Node.js 完成專案的預設位置:
const fetch = require('node-fetch');
async function finalizeProjectLocation(projectId, locationId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/defaultLocation:finalize';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'locationId': locationId
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
結果
呼叫 projects.defaultLocation.finalize
的結果是
Operation
。使用前
可以呼叫專案的其他 Firebase 相關端點,作業必須
才能成功
如果要檢查作業是否成功,您可以在operations.get
作業,直到 done
的值是 true
,且其 response
屬於類型
google.protobuf.Empty
。如果作業失敗,回應主體
「error
」屬於 google.rpc.Status
類型。Operation
會自動
完成後就會刪除