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

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

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

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

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

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

قبل از شروع

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

مدیریت REST API را برای پروژه Google Cloud خود فعال کنید

اگر قبلاً این کار را نکرده‌اید، باید API مدیریت Firebase را برای استفاده با پروژه Google Cloud خود فعال کنید.

  1. صفحه Firebase Management API را در کنسول Google APIs باز کنید.
  2. وقتی از شما خواسته شد، پروژه Google Cloud خود را انتخاب کنید.
  3. در صفحه Firebase Management API روی Enable کلیک کنید.

کد دسترسی 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 را با استفاده از نام منبع 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 را برای پروژه خود فراخوانی کنید، عملیات باید موفقیت آمیز باشد.

برای بررسی موفقیت‌آمیز بودن عملیات، می‌توانید تا زمانی که مقدار done true باشد و response آن از نوع FirebaseProject باشد، operations.get را روی عملیات فراخوانی کنید. اگر عملیات ناموفق باشد، 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 خود انتخاب کنید.

می‌توانید یک حساب 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 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 را برای پروژه خود فراخوانی کنید، عملیات باید موفقیت آمیز باشد.

برای بررسی موفقیت‌آمیز بودن عملیات، می‌توانید تا زمانی که مقدار done true باشد و response از نوع analyticsDetails باشد، operations.get را روی عملیات فراخوانی کنید. اگر عملیات ناموفق باشد، 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 که در بدنه درخواست ارائه می کنید، ایجاد می کند.

اگر 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 را برای پروژه خود فراخوانی کنید، عملیات باید موفقیت آمیز باشد.

برای بررسی موفقیت‌آمیز بودن عملیات، می‌توانید عملیات را تا زمانی که مقدار done true باشد و response آن از نوع google.protobuf.Empty باشد، در operations.get فراخوانی کنید. اگر عملیات ناموفق باشد، error بدنه پاسخ از نوع google.rpc.Status خواهد بود. Operation پس از اتمام به طور خودکار حذف می شود.