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

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

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

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

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

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

قبل از اینکه شروع کنی

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

مدیریت API REST را برای پروژه 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 را روی 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 خود انتخاب کنید.

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

گواهی های SHA را اضافه کنید

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

هنگام تماس با projects.androidApps.sha.create ، باید یک هش گواهی معتبر SHA-1 یا SHA-256 ارائه دهید. می توانید هش SHA گواهی امضای خود را با دستور 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 را برای پروژه خود فراخوانی کنید، عملیات باید موفقیت آمیز باشد.

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

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

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