Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

API REST ניהול Firebase מאפשר התקנה תוכניתית וניהול של פרויקטי Firebase, לרבות משאבי Firebase של פרויקט Firebase Apps.

סקירה זו מתארת את תהליך העבודה הכללי להוסיף משאבי Firebase ויישומים קיימים פרויקט ענן Google שאינו משתמש כיום שירותי Firebase.

אתה יכול לעבור לקטעים ספציפיים של דף זה אם אתה רק רוצה:

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

לקבלת מידע על ניהול גישה ל- API ניהול Firebase, לבקר את ניהול גישה וזהות ענן תיעוד API (IAM) .

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

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

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

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

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

צור אסימון גישה ל- 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"

לאחר מכן, השתמש ב- SDK לניהול Firebase כדי לקבל אסימון גישה מאישורים של חשבון השירות שלך:

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

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

אתה יכול להוסיף אפליקציית אנדרואיד Firebase לפרויקט Firebase הקיים שלך.

בַּקָשָׁה

השיחה projects.androidApps.create . כך תוכל לבנות את גוף הבקשה שלך:

  • נדרש:

    • packageName : שם החבילה הקנונית של אפליקציית ה- Android כפי שהיו מופיע במסוף מפתחי Google Play.
  • אופציונלי, אך מומלץ:

    • displayName : השם לתצוגה-שהוקצו המשתמשים של האפליקציה. ערך זה שימושי עבור מציאת האפליקציה שלך בהמשך קונסולת Firebase .

בגוף הבקשה למשל שלנו, נשתמש packageName ו displayName :

{
  "displayName": "My Firebase Android App"
  "packageName": "com.firebase.android"
}

להלן דוגמה עבור Node.js להוספת אפליקציית Android של Firebase לפרויקט 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 אנדרואיד, כמו Firebase הייחודי appId . Operation נמחק באופן אוטומטי לאחר סיום.

הוסף אישורי SHA

תוכל להוסיף אישורים SHA לכל App Firebase Android הקיים על ידי התקשרות projects.androidApps.sha.create . גוף הבקשה קוראה לשיטה זו חייבת להיות ריק name שדה. התוצאה של שיחה מדוברת במופע חדש שנוצר של ShaCertificate .

בעת התקשרות projects.androidApps.sha.create , עליך לספק Hash אישור SHA-1 או SHA-256 תקף. אתה יכול לקבל את חשיש SHA של תעודת החתימה שלך עם gradle signingReport הפקודה:

./gradlew signingReport

לקבלת מידע נוסף, בקר Google APIs עבור אנדרואיד .

אתה יכול לקשר קיים בחשבון 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 לכל Apps Firebase הקיים שלך FirebaseProject (מבוסס על packageName או bundleId הקשורים לזרם נתונים). לאחר מכן, לפי העניין, זרמי הנתונים והאפליקציות מקושרים. שים לב שהקישור האוטומטי הזה חל רק על אפליקציות Android ואפליקציות iOS.

  2. אם לא נמצאו זרמי נתונים מתאימים לאפליקציות 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 נכון ואת response הסוג הוא analyticsDetails , את FirebaseProject קשור עכשיו לחשבון Google Analytics שצוין. Operation נמחק באופן אוטומטי לאחר סיום.

סיים את מיקום ברירת המחדל של הפרויקט שלך (אופציונלי)

אם הפרויקט Firebase שלך ישתמשו ענן Firestore, אחסון בענן, או אפליקציה App Engine, אתה יכול לסיים את ברירת המחדל של Google Cloud Platform (GCP) מיקום משאב עבור הפרויקט שלך תוכניתי. שים לב, אתה יכול גם לבחור מיקום של קונסולת Firebase .

לפני קביעת המיקום הזה, לבדוק בחרו מיקומים עבור הפרויקט שלך לקבלת מידע על אשר המיקום הוא טוב ביותר עבור הפרויקט שלכם. כמו כן כדאי לקרוא projects.availableLocations להחזיר מיקומיהם תקפו את הפרויקט כי אם הפרויקט שלך הוא חלק מארגון Google Cloud, אז שלך מדיניות הארגון עלולה להגביל את המיקומים תקפים הפרויקט שלך.

קורא זה defaultLocation.finalize השיטה יוצרת יישום מנוע היישומים עם דלי ברירת המחדל לאחסון בענן ממוקם locationId שתספק בגוף הבקשה.

מיקום משאב GCP המחדל שייתכן שכבר צוין אם Project כבר יש יישום מנוע יישומים או זה defaultLocation.finalize שיטה נקראה בעבר.

בַּקָשָׁה

השיחה projects.defaultLocation.finalize . כך תוכל לבנות את גוף הבקשה שלך:

  • נדרש:

    • locationId : המיקום שבו הנתונים מאוחסנים עבור שירותי GCP הדורשים הגדרת המיקום, כמו ענן Firestore או לאחסון בענן.
{
  "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 נמחק באופן אוטומטי לאחר סיום.