إعداد مشروع 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 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 إلى 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.

يمكنك إضافة تطبيق Firebase المتوافق مع Android إلى مشروع Firebase الحالي.

طلب

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

  • مطلوب:

    • packageName: اسم الحزمة الأساسية لتطبيق Android كما هو تظهر في Google Play Console.
  • اختيارية، ولكن ننصح بها:

    • 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 لمشروعك، يجب ناجحًا.

للتأكّد من نجاح العملية، يمكنك طلب 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. يحتوي الرد أيضًا على عبارات أخرى معلومات مفيدة حول تطبيق Android على Firebase الذي تم إنشاؤه حديثًا، مثل appId الفريد على Firebase يتم حذف Operation تلقائيًا بعد إتمام المشروع.

إضافة شهادات SHA

يمكنك إضافة شهادات SHA إلى أي تطبيق Android حالي في Firebase من خلال طلب projects.androidApps.sha.create يجب أن يحتوي نص الطلب لاستدعاء هذه الطريقة على حقل name فارغ. نتيجة هذه الاستدعاء هي مثيل حديث تم إنشاؤه ShaCertificate

عند الاتصال بـ projects.androidApps.sha.create، يجب تقديم رقم تعريف صالح تجزئة شهادة SHA-1 أو SHA-256 يمكنك الحصول على تجزئة SHA للتوقيع. الشهادة باستخدام الأمر signingReport في Gradle:

./gradlew signingReport

لمزيد من المعلومات، يمكنك الانتقال إلى Google APIs لتطبيق Android

يمكنك ربط حساب حسابك على "إحصاءات 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، يمكنك إنهاء سياسة Google Cloud التلقائية الموقع الجغرافي لمورد النظام الأساسي (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 أو 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 تلقائيًا سيتم حذفها بعد الانتهاء.