إعداد مشروع Firebase وإدارته باستخدام Management REST API

تعمل Firebase Management REST API على تفعيل هي عملية الإعداد والإدارة الآلية لمشاريع Firebase، بما في ذلك موارد Firebase وتطبيقات Firebase.

توضح هذه النظرة العامة سير العمل العام لإضافة موارد Firebase التطبيقات إلى حساب Google Cloud حالي المشروع التي لا تستخدم خدمات Firebase حاليًا

يمكنك الانتقال سريعًا إلى أقسام معينة من هذه الصفحة إذا كنت تريد فقط:

قبل اتباع أي خطوات واردة في هذه الصفحة، تأكَّد من تفعيل واجهة برمجة التطبيقات

للحصول على معلومات عن إدارة أذونات الوصول في Firebase Management API، يُرجى الانتقال إلى واجهة برمجة تطبيقات إدارة الوصول إلى Cloud Identity (IAM) ذات الصلة.

قبل البدء

قبل البدء، يجب تفعيل 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"

Windows

باستخدام PowerShell:

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

بعد ذلك، استخدِم حزمة تطوير البرامج (SDK) لمشرف Firebase للحصول على رمز دخول من خدمتك بيانات اعتماد الحساب:

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 المشروعات:

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 إلى First Cloud Project باستخدام اسم المورد projects/first-gcp-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.

يمكنك ربط حساب حسابك على "إحصاءات Google" بحسابك الحالي FirebaseProject آليًا. لاحظ أنه يمكنك أيضًا ربط حسابك الحالي مشروع Firebase إلى "إحصاءات Google" في عمليات الدمج علامة التبويب في إعدادات المشروع.

يتطلّب الاتصال إلى "projects.addGoogleAnalytics" توفُّر analytics_resource، والتي يمكن أن تكون analyticsAccountId أو analyticsPropertyId:

  • تحديد analyticsAccountId حالية لتوفير حساب جديد على "إحصاءات Google" في الحساب المحدد وربط الموقع الجديد مشروع على Firebase.

  • تحديد analyticsPropertyId حالية لربط "إحصاءات Google" بمشروع Firebase.

يمكنك العثور على كلّ من analyticsAccountId وأي محتوى حالي. analyticsPropertyId في إحصاءات Google موقعك الإلكتروني.

عند الاتصال بـ "projects.addGoogleAnalytics":

  1. تحدِّد عملية التحقّق الأولى ما إذا كانت أيّ مصادر بيانات حالية في حساب يتوافق موقع "إحصاءات Google" مع أي تطبيقات Firebase حالية في FirebaseProject (استنادًا إلى packageName أو bundleId المرتبطَين مصدر البيانات). وبعد ذلك، يتم ربط مصادر البيانات والتطبيقات، حسب الاقتضاء. لاحظ أن هذا الربط التلقائي لا ينطبق إلا على تطبيقات Android وتطبيقات iOS.

  2. في حال عدم العثور على مصادر بيانات مقابلة لتطبيقات Firebase، ستتم إضافة بيانات جديدة يتم توفير مصادر البيانات في موقع "إحصاءات Google" لكل من تطبيقات Firebase. تجدر الإشارة إلى أنّه يتم دائمًا توفير مصدر بيانات جديد لموقع إلكتروني حتى إذا كان التطبيق مرتبطًا في السابق بمصدر بيانات في على "إحصاءات Google".

مزيد من المعلومات عن التسلسل الهرمي لحسابات "إحصاءات Google" وبنيتها في مستندات "إحصاءات Google":

طلب

اتصل projects.addGoogleAnalytics.

في نص الطلب الخاص بمثال الاتصال بـ project.addGoogleAnalytics، تحديد حساب "إحصاءات Google" analyticsAccountId. ستؤدي هذه المكالمة إلى توفير موقع جديد على "إحصاءات Google" وربط الموقع الجديد FirebaseProject.

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

في ما يلي مثال على Node.js لربط مشروع Firebase بحساب على "إحصاءات Google" الحساب:

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" المحدّد. تشير رسالة الأشكال البيانية ويتم حذف "Operation" تلقائيًا بعد اكتمال العملية.

إكمال الموقع الجغرافي التلقائي لمشروعك (اختياري)

إذا كان مشروعك في Firebase سيستخدم Cloud Firestore أو Cloud Storage أحد تطبيقات App Engine، يمكنك إنهاء عملية إعداد الموقع الجغرافي لمورد النظام الأساسي (GCP) لمشروعك آليًا. لاحظ أنه يمكنك أيضًا تحديد موقع في الـ وحدة تحكُّم Firebase:

قبل تعيين هذا الموقع، راجع تحديد مواقع المشروع للحصول على معلومات حول الموقع الأفضل لمشروعك. يجب عليك أيضًا استدعاء projects.availableLocations لعرض قائمة بالمواقع الصالحة لمشروعك لأنه إذا تنتمي إلى مؤسسة على Google Cloud، ست حينها سياسات مؤسستك قد تفرض قيودًا على المواقع الجغرافية صالحة لمشروعك.

يؤدي استدعاء هذه الطريقة defaultLocation.finalize إلى إنشاء App Engine. تطبيق يتضمن Cloud Storage افتراضية حزمة الموجودة في locationId التي تقدّمها في نص الطلب

ربما تم تحديد الموقع التلقائي لمورد Google Cloud Platform إذا كان لدى Project تطبيق App Engine حاليًا أو هذا كان يتم استدعاء طريقة defaultLocation.finalize سابقًا.

طلب

اتصل projects.defaultLocation.finalize. في ما يلي كيفية إنشاء نص الطلب:

  • مطلوب:

    • locationId: الموقع الذي يتم فيه تخزين بياناتك لخدمات GCP التي تتطلب إعدادًا للموقع الجغرافي، مثل Cloud Firestore أو التخزين السحابي:
{
  "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 تلقائيًا سيتم حذفها بعد الانتهاء.