Firebase Management REST API מאפשר הגדרה וניהול של פרויקטים ב-Firebase באופן פרוגרמטי, כולל משאבי Firebase ואפליקציות Firebase של פרויקט.
במאמר הזה מוסבר על תהליך העבודה הכללי להוספת משאבים ואפליקציות של Firebase לGoogle Cloudפרויקט קיים שלא נעשה בו עדיין שימוש בשירותי Firebase.
אפשר לדלג לקטעים ספציפיים בדף הזה אם רוצים רק:
- הוספת שירותי Firebase לפרויקט
- הוספת אפליקציות Firebase לפרויקט Firebase
- קישור פרויקט Firebase לחשבון Google Analytics
לפני שמבצעים את השלבים בדף הזה, חשוב להפעיל את ה-API.
למידע על ניהול הרשאות גישה ל-Firebase Management API, אפשר לעיין במסמכי התיעוד של Cloud Identity Access Management (IAM) API.
לפני שמתחילים
לפני שמתחילים, צריך להפעיל את Management API בפרויקט Google Cloud וליצור את אסימון הגישה.
הפעלת Management REST API בפרויקט Google Cloud
אם עדיין לא עשיתם זאת, תצטרכו להפעיל את Firebase Management API לשימוש בפרויקט Google Cloud.
- פותחים את הדף Firebase Management API במסוף Google APIs.
- כשמופיעה בקשה, בוחרים את הפרויקט Google Cloud.
- לוחצים על Enable (הפעלה) בדף 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);
});
}
איך מוצאים את שם המשאב של הפרויקט
אפשר לראות את Google Cloud הפרויקטים שזמינים להוספת שירותי Firebase.
בקשה
מתקשרים אל 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 או להוסיף אפליקציות לפרויקט.
בקטע הבא נסביר איך להוסיף שירותי Firebase ל-First Cloud Project
באמצעות שם המשאב projects/first-gcp-project
.
הוספת שירותי Firebase לפרויקט
ב-Google Cloud פרויקטים אפשר להשתמש בשירותים שמוצעים על ידי Firebase. בקטע הזה נסביר איך להוסיף שירותי Firebase לפרויקט Google Cloud קיים באופן פרוגרמטי. שימו לב שאפשר גם להוסיף שירותי Firebase לפרויקט Google Cloud הקיים במסוף Firebase.
בקשה
מתקשרים אל 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+
אפשר להוסיף אפליקציית iOS ב-Firebase לפרויקט Firebase קיים.
בקשה
מתקשרים אל projects.iosApps.create
.
כך יוצרים את גוף הבקשה:
נדרש:
-
bundleId
: מזהה החבילה הקנוני של האפליקציה ל-iOS, כפי שהוא מופיע בחנות האפליקציות ל-iOS.
-
אופציונלי, אבל מומלץ:
displayName
: השם המוצג של האפליקציה שהמשתמש הקצה. הערך הזה שימושי למציאת האפליקציה בהמשך במסוף Firebase.
appStoreId
: מזהה Apple ID שמוקצה לאפליקציה שלכם על ידי Apple באופן אוטומטי. מצייניםappStoreId
אם הוא כבר הוקצה על ידי אפל.
בדוגמה שלנו, נשתמש רק ב-displayName
וב-bundleId
בגוף הבקשה:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
הנה דוגמה ל-Node.js להוספת אפליקציית iOS של Firebase לפרויקט 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
. התגובה מכילה גם מידע שימושי אחר על אפליקציית iOS החדשה שנוצרה ב-Firebase, כמו מזהה Firebase הייחודי appId
. ה-Operation
נמחק אוטומטית אחרי ההשלמה.
Android
אתם יכולים להוסיף אפליקציית Android ב-Firebase לפרויקט Firebase קיים.
בקשה
מתקשרים אל projects.androidApps.create
.
כך יוצרים את גוף הבקשה:
נדרש:
-
packageName
: שם החבילה הקנוני של אפליקציית Android, כפי שהוא מופיע ב-Google Play Console.
-
אופציונלי, אבל מומלץ:
-
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
. התגובה מכילה גם מידע שימושי אחר על אפליקציית Android החדשה שלכם ב-Firebase, כמו מזהה Firebase ייחודי appId
. ה-Operation
נמחק אוטומטית אחרי השלמת הפעולה.
הוספת אישורי SHA
אפשר להוסיף אישורי SHA לכל אפליקציית Android קיימת ב-Firebase באמצעות הקריאה ל-projects.androidApps.sha.create
.
גוף הבקשה של קריאת השיטה הזו חייב לכלול שדה name
ריק.
התוצאה של הקריאה הזו היא מופע חדש שנוצר של ShaCertificate
.
כשמתקשרים אל projects.androidApps.sha.create
, צריך לספק גיבוב אישור SHA-1 או SHA-256 תקין. אפשר לקבל את הגיבוב SHA של אישור החתימה באמצעות הפקודה signingReport
של gradle:
./gradlew signingReport
מידע נוסף זמין במאמר בנושא ממשקי Google API ל-Android.
אינטרנט
אתם יכולים להוסיף אפליקציית אינטרנט של Firebase לפרויקט Firebase קיים.
בקשה
מתקשרים אל projects.webApps.create
.
כך יוצרים את גוף הבקשה:
אופציונלי:
-
displayName
: השם המוצג של האפליקציה שהמשתמש הקצה. הערך הזה שימושי כדי למצוא את האפליקציה מאוחר יותר במסוף Firebase.
-
לא מומלץ:
-
appUrls
: כתובות ה-URL המלאות שבהן האפליקציה מתארחת. כשמקשרים אפליקציית אינטרנט ב-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 דרך הכרטיסייה Integrations (שילובים) בקטע Project Settings (הגדרות הפרויקט).
הקריאה אל projects.addGoogleAnalytics
דורשת analytics_resource
, שיכול להיות analyticsAccountId
או analyticsPropertyId
:
מציינים
analyticsAccountId
קיים כדי להקצות נכס חדש של Google Analytics בחשבון שצוין, ולשייך את הנכס החדש לפרויקט Firebase.מציינים
analyticsPropertyId
קיים כדי לשייך את נכס Google Analytics לפרויקט Firebase.
אפשר למצוא את analyticsAccountId
וכל analyticsPropertyId
קיים באתר Google Analytics.
כשמתקשרים projects.addGoogleAnalytics
:
בבדיקה הראשונה נקבע אם יש מקורות נתונים קיימים בנכס Google 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
נמחק אוטומטית אחרי ההשלמה.