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

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

This overview describes the general workflow to add Firebase resources and apps to an existing Google Cloud project that doesn't yet use Firebase services.

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

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

برای اطلاعات بیشتر در مورد مدیریت دسترسی برای API مدیریت Firebase، به مستندات API مدیریت دسترسی به هویت ابری (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"

ویندوز

با پاورشل:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

سپس، از Firebase Admin SDK برای دریافت یک توکن دسترسی از اعتبارنامه‌های حساب سرویس خود استفاده کنید:

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 اضافه خواهیم کرد.

سرویس‌های فایربیس را به پروژه خود اضافه کنید

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

درخواست

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

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

آی‌او‌اس+

شما می‌توانید یک اپلیکیشن iOS فایربیس را به پروژه فایربیس موجود خود اضافه کنید.

درخواست

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

  • مورد نیاز:

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

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

    • appStoreId : شناسه اپل (Apple ID) که به طور خودکار توسط اپل به برنامه شما اختصاص داده شده است. اگر قبلاً توسط اپل اختصاص داده شده است، appStoreId را مشخص کنید.

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

اندروید

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

درخواست

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

  • مورد نیاز:

    • packageName : نام بسته‌ی استاندارد برنامه‌ی اندروید، همانطور که در کنسول توسعه‌دهندگان گوگل پلی نمایش داده می‌شود.
  • اختیاری، اما توصیه می‌شود:

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

در بدنه درخواست برای مثال ما، packageName و displayName استفاده خواهیم کرد:

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

در اینجا مثالی برای Node.js برای افزودن یک برنامه اندروید 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']);
  }
}

نتیجه

The result of a call to projects.androidApps.create is an Operation . Before you can call other Firebase-related endpoints for your project, the operation must be successful.

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

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

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

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

./gradlew signingReport

برای اطلاعات بیشتر، به Google APIs for Android مراجعه کنید.

وب

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

درخواست

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

  • اختیاری:

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

    • appUrls : آدرس‌های اینترنتی (URL) کاملاً واجد شرایط که برنامه در آنها میزبانی می‌شود. وقتی یک برنامه وب 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 پس از اتمام به طور خودکار حذف می‌شود.

شما می‌توانید یک حساب گوگل آنالیتیکس موجود را به صورت برنامه‌نویسی شده به FirebaseProject موجود خود پیوند دهید. توجه داشته باشید که می‌توانید پروژه فایربیس موجود خود را نیز در تب Integrations در تنظیمات پروژه خود به گوگل آنالیتیکس پیوند دهید.

فراخوانی projects.addGoogleAnalytics به یک analytics_resource نیاز دارد که می‌تواند یک analyticsAccountId یا یک analyticsPropertyId باشد:

  • یک analyticsAccountId موجود را برای ایجاد یک ویژگی جدید Google Analytics در حساب مشخص شده مشخص کنید و ویژگی جدید را با پروژه Firebase خود مرتبط کنید.

  • برای مرتبط کردن ویژگی Google Analytics با پروژه Firebase خود، یک analyticsPropertyId موجود را مشخص کنید.

شما می‌توانید هم analyticsAccountId خود و هم هرگونه analyticsPropertyId موجود را در وب‌سایت گوگل آنالیتیکس پیدا کنید.

وقتی projects.addGoogleAnalytics را فراخوانی می‌کنید:

  1. اولین بررسی تعیین می‌کند که آیا جریان‌های داده موجود در ویژگی Google Analytics با برنامه‌های Firebase موجود در FirebaseProject شما مطابقت دارند یا خیر (بر اساس packageName یا bundleId مرتبط با جریان داده). سپس، در صورت لزوم، جریان‌های داده و برنامه‌ها به هم مرتبط می‌شوند. توجه داشته باشید که این پیوند خودکار فقط برای برنامه‌های Android و iOS اعمال می‌شود.

  2. اگر هیچ جریان داده‌ی متناظری برای برنامه‌های Firebase شما یافت نشد، جریان‌های داده‌ی جدیدی در ویژگی Google Analytics برای هر یک از برنامه‌های Firebase شما فراهم می‌شوند. توجه داشته باشید که یک جریان داده‌ی جدید همیشه برای یک برنامه‌ی وب فراهم می‌شود، حتی اگر قبلاً با یک جریان داده در ویژگی 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 برابر با true و نوع response analyticsDetails است، FirebaseProject اکنون به حساب Google Analytics مشخص شده لینک شده است. Operation پس از اتمام به طور خودکار حذف می‌شود.