با استفاده از 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 Apps را به پروژه Firebase موجود خود در کنسول Firebase اضافه کنید.

یک نوع برنامه Firebase را برای افزودن به پروژه Firebase خود انتخاب کنید.

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

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

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

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