راه‌اندازی و مدیریت کردن پروژه Firebase بااستفاده از Management REST API

Firebase Management REST API امکان راه‌اندازی و مدیریت برنامه‌نویسی‌شده پروژه‌های Firebase را فراهم می‌کند، ازجمله منابع Firebase و برنامه‌های Firebase پروژه.

این نمای کلی گردش کار عمومی را برای افزودن منابع و برنامه‌های Firebase به پروژه Google Cloud موجود که هنوز از خدمات Firebase استفاده نمی‌کند، شرح می‌دهد.

اگر فقط می‌خواهید کارهای زیر را انجام دهید، می‌توانید به بخش‌های خاصی از این صفحه بروید:

قبل‌از دنبال کردن هریک از مراحل این صفحه، مطمئن شوید که میانای برنامه‌سازی کاربردی را فعال کرده‌اید.

برای اطلاعات درباره مدیریت دسترسی برای Firebase Management API، به سند Cloud Identity Access Management (IAM) API مراجعه کنید.

قبل از شروع

قبل‌از شروع، باید Management 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، روی فعال کردن کلیک کنید.

ایجاد کردن کد دسترسی میانای برنامه‌سازی کاربردی

در اینجا مثالی برای 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» برای دریافت کد دسترسی از اعتبارنامه‌های حساب سرویس خود استفاده کنید:

import { initializeApp, applicationDefault } from "firebase-admin/app";

initializeApp();

async function getAccessToken() {
  try {
    const accessToken = await applicationDefault().getAccessToken();
    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 را بااستفاده از نام منبع projects/first-gcp-project به First Cloud 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+‎

می‌توانید برنامه Firebase iOS را به پروژه Firebase موجودتان اضافه کنید.

درخواست

با projects.iosApps.create تماس بگیرید. نحوه ساختن بدنه درخواست در اینجا آمده است:

  • موارد ضروری:

    • bundleId: شناسه بسته ترکیبی متعارف برنامه iOS همان‌طور که در iOS App Store نشان داده می‌شود.
  • اختیاری، اما توصیه‌شده:

    • displayName: نام نمایشی برنامه که کاربر اختصاص داده است. این مقدار برای پیدا کردن برنامه در کنسول Firebase در آینده مفید است.

    • ‫appStoreId: شناسه Apple که به‌طور خودکار تولید شده و توسط Apple به برنامه شما اختصاص داده شده است. اگر appStoreId قبلاً توسط Apple اختصاص داده شده است، آن را مشخص کنید.

در بدنه درخواست برای مثالمان، فقط از displayName و bundleId استفاده می‌کنیم:

{
  "displayName": "My Firebase iOS App",
  "bundleId": "com.firebase.ios"
}

در اینجا مثالی برای Node.js برای افزودن برنامه Firebase iOS به پروژه 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» جدید شما است، مانند appId Firebase منحصربه‌فرد. Operation پس‌از تکمیل به‌طور خودکار حذف می‌شود.

Android

می‌توانید برنامه Android‏ Firebase را به پروژه Firebase موجودتان اضافه کنید.

درخواست

با projects.androidApps.create تماس بگیرید. نحوه ساختن بدنه درخواست در اینجا آمده است:

  • موارد ضروری:

    • packageName: نام بسته متعارف برنامه Android همان‌طور که در کنسول Google Play Developer نشان داده می‌شود.
  • اختیاری، اما توصیه‌شده:

    • 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 دارد. پاسخ همچنین حاوی اطلاعات مفید دیگری درباره «برنامه Android» تازه ایجادشده Firebase شما است، مانند appId Firebase منحصربه‌فرد. Operation پس‌از تکمیل به‌طور خودکار حذف می‌شود.

افزودن گواهینامه‌های SHA

با فراخوانی projects.androidApps.sha.create می‌توانید گواهی‌های SHA را به هر «برنامه Android» موجود در Firebase اضافه کنید. بدنه درخواست برای این فراخوانی روش باید فیلد name خالی داشته باشد. نتیجه این فراخوانی نمونه جدیدی از ShaCertificate است.

هنگام فراخوانی projects.androidApps.sha.create، باید درهم‌سازی گواهی SHA-1 یا SHA-256 معتبری ارائه دهید. می‌توانید درهم‌ساز SHA گواهینامه امضای خود را با فرمان gradle signingReport دریافت کنید:

./gradlew signingReport

برای اطلاعات بیشتر، به میاناهای برنامه‌سازی کاربردی Google برای Android مراجعه کنید.

وب

می‌توانید برنامه وب Firebase را به پروژه Firebase موجودتان اضافه کنید.

درخواست

با projects.webApps.create تماس بگیرید. نحوه ساختن بدنه درخواست در اینجا آمده است:

  • اختیاری:

    • displayName: نام نمایشی برنامه که کاربر اختصاص داده است. این مقدار برای پیدا کردن برنامه شما در آینده در کنسول Firebase مفید است.
  • توصیه نمی‌شود:

    • appUrls: نشانی‌های وب کاملاً واجدشرایطی که برنامه در آن‌ها میزبانی می‌شود. وقتی «برنامه وب 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» جدیداً ایجادشده شما است، مانند appId Firebase منحصربه‌فرد. Operation پس‌از تکمیل به‌طور خودکار حذف می‌شود.

می‌توانید حساب 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 مرتبط با جریان داده). سپس، درصورت لزوم، جاری‌سازی‌های داده و برنامه‌ها پیوند داده می‌شوند. توجه داشته باشید که این پیونددهی خودکار فقط برای «برنامه‌های 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 پس‌از تکمیل به‌طور خودکار حذف می‌شود.