Firebase 管理 REST API支持對 Firebase 項目進行編程設置和管理,包括項目的 Firebase 資源和 Firebase 應用。
本概述介紹了將 Firebase 資源和應用添加到當前未使用 Firebase 服務的現有Google Cloud 項目的一般工作流程。
如果您只想:
- 將 Firebase 服務添加到您的項目
- 將 Firebase 應用添加到您的 Firebase 項目
- 將您的 Firebase 項目關聯到 Google Analytics(分析)帳戶
- 確定項目的默認位置
在執行此頁面上的任何步驟之前,請確保啟用 API 。
有關 Firebase Management API 訪問管理的信息,請訪問Cloud Identity Access Management (IAM) API 文檔。
在你開始之前
在開始之前,您需要為您的 Google Cloud 項目啟用 Management API並生成您的訪問令牌。
為您的 Google Cloud 項目啟用管理 REST API
如果您還沒有啟用Firebase Management API以用於您的 Google Cloud 項目,則需要啟用該 API。
- 在 Google API 控制台中打開Firebase Management API頁面。
- 出現提示時,選擇您的 Google Cloud 項目。
- 點擊 Firebase 管理 API 頁面上的啟用。
生成您的 API 訪問令牌
這是檢索您的訪問令牌的 Node.js 示例。
首先,如果您不在 Google Cloud 環境中,請將GOOGLE_APPLICATION_CREDENTIALS
環境變量設置為您的服務帳號密鑰的路徑。
Linux 或 macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
視窗
使用 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
的響應正文。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 和 Web 應用程序。在本節中,您將了解如何以編程方式將 Firebase 應用程序添加到您現有的FirebaseProject
。請注意,您還可以在Firebase 控制台中將 Firebase 應用程序添加到您現有的 Firebase 項目中。
選擇要添加到 Firebase 項目的 Firebase 應用類型。
您可以將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
的響應正文。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 項目與 Google Analytics(分析)帳戶相關聯(可選)
您可以以編程方式將現有的Google Analytics(分析)帳戶鏈接到現有的FirebaseProject
。請注意,您還可以在Project Settings的Integrations選項卡中將現有 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 應用配置新的數據流。請注意,始終會為 Web 應用程序配置新的數據流,即使它之前與您的 Analytics 媒體資源中的數據流相關聯。
在 Google 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
的響應正文。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 Platform (GCP) 資源位置。請注意,您還可以在Firebase 控制台中選擇一個位置。
在設置此位置之前,請查看為您的項目選擇位置以獲取有關哪個位置最適合您的項目的信息。您還應該調用projects.availableLocations
以返回項目的有效位置列表,因為如果您的項目是 Google Cloud 組織的一部分,那麼您的組織政策可能會限制哪些位置對您的項目有效。
調用此defaultLocation.finalize
方法會創建一個 App Engine 應用程序,其默認 Cloud Storage 存儲桶位於您在請求正文中提供的locationId
中。
如果Project
已經有 App Engine 應用程序或之前調用了此defaultLocation.finalize
方法,則可能已經指定了默認 GCP 資源位置。
要求
調用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
完成後會自動刪除。