הגדר ונהל פרויקט Firebase באמצעות ה-Management REST API

Firebase Management REST API מאפשר הגדרה וניהול פרוגרמטיים של פרויקטים של Firebase, כולל משאבי Firebase ו-Firebase Apps של הפרויקט.

סקירה כללית זו מתארת ​​את זרימת העבודה הכללית להוספת משאבים ואפליקציות של Firebase לפרויקט Google Cloud קיים שאינו משתמש כעת בשירותי Firebase.

אתה יכול לדלג לחלקים ספציפיים בדף זה אם אתה רק רוצה:

לפני שתבצע את השלבים בדף זה, ודא שאתה מפעיל את ה-API .

למידע על ניהול גישה עבור Firebase Management API, בקר בתיעוד של Cloud Identity Access Management (IAM) API .

לפני שאתה מתחיל

לפני שתתחיל, יהיה עליך להפעיל את ה-API לניהול עבור פרויקט Google Cloud שלך ולהפיק את אסימון הגישה שלך .

הפעל את ה-Management REST API עבור פרויקט Google Cloud שלך

אם עדיין לא עשית זאת, תצטרך להפעיל את Firebase Management API לשימוש עם פרויקט Google Cloud שלך.

  1. פתח את דף Firebase Management API במסוף Google APIs.
  2. כשתתבקש, בחר בפרויקט Google Cloud שלך.
  3. לחץ על הפעל בדף Firebase Management API.

צור אסימון גישה ל-API שלך

הנה דוגמה עבור Node.js המאחזר את אסימון הגישה שלך.

ראשית, אם אינך נמצא בסביבת Google Cloud, הגדר את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS לנתיב אל מפתח חשבון השירות שלך.

לינוקס או 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);
      });
}

מצא את שם המשאב של הפרויקט שלך

אתה יכול למצוא את הפרויקטים של 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 Apps לפרויקט Firebase הקיים שלך במסוף Firebase .

בחר סוג של אפליקציית Firebase להוספה לפרויקט Firebase שלך.

אתה יכול לקשר חשבון Google Analytics קיים ל- FirebaseProject הקיים שלך באופן פרוגרמטי. שים לב שאתה יכול גם לקשר את פרויקט Firebase הקיים שלך ל-Google Analytics בכרטיסייה אינטגרציות של הגדרות הפרויקט שלך.

הקריאה ל- projects.addGoogleAnalytics דורשת analytics_resource , שיכול להיות analyticsAccountId או analyticsPropertyId :

  • ציין analyticsAccountId קיים כדי לספק נכס Google Analytics חדש בחשבון שצוין ולשייך את הנכס החדש לפרויקט Firebase שלך.

  • ציין analyticsPropertyId קיים כדי לשייך את נכס Google Analytics לפרויקט Firebase שלך.

אתה יכול למצוא גם את analyticsAccountId שלך וגם כל analyticsPropertyId קיים באתר Google Analytics .

כשאתה מתקשר projects.addGoogleAnalytics :

  1. הבדיקה הראשונה קובעת אם זרמי נתונים קיימים בנכס Google Analytics תואמים לאפליקציות Firebase הקיימות ב- FirebaseProject שלך (בהתבסס על packageName או bundleId המשויכים לזרם הנתונים). לאחר מכן, לפי העניין, זרמי הנתונים והאפליקציות מקושרים. שים לב שהקישור האוטומטי הזה חל רק על אפליקציות אנדרואיד ואפליקציות iOS.

  2. אם לא נמצאו זרמי נתונים תואמים עבור אפליקציות Firebase שלך, זרמי נתונים חדשים יסופקו בנכס Google Analytics עבור כל אחת מאפליקציות Firebase שלך. שים לב שזרם נתונים חדש מסופק תמיד לאפליקציית אינטרנט גם אם הוא היה משויך בעבר לזרם נתונים בנכס Analytics שלך.

למידע נוסף על ההיררכיה והמבנה של חשבונות Google Analytics בתיעוד של Analytics .

בַּקָשָׁה

התקשר ל- projects.addGoogleAnalytics .

בגוף הבקשה לקריאה לדוגמה שלנו ל- project.addGoogleAnalytics , נציין את חשבון Google Analytics 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 הוא נכון וסוג 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 שאתה מספק בגוף הבקשה.

ייתכן שמיקום ברירת המחדל של משאב GCP כבר צוין אם 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 נמחקת אוטומטית לאחר השלמתה.