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

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

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

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

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

للحصول على معلومات حول إدارة الوصول لواجهة برمجة تطبيقات Firebase Management API، تفضل بزيارة وثائق واجهة برمجة التطبيقات Cloud Identity Access Management (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.

قم بإنشاء رمز وصول API الخاص بك

فيما يلي مثال لـ Node.js الذي يسترد رمز الوصول الخاص بك.

أولاً، إذا لم تكن في بيئة Google Cloud، فاضبط متغير البيئة GOOGLE_APPLICATION_CREDENTIALS على المسار إلى مفتاح حساب الخدمة الخاص بك.

لينكس أو ماك

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 للحصول على رمز وصول من بيانات اعتماد حساب الخدمة الخاص بك:

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 الخاص بك.

يمكنك ربط حساب 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 المرتبط بمصدر البيانات). وبعد ذلك، حسب الاقتضاء، يتم ربط مصادر البيانات والتطبيقات. لاحظ أن هذا الارتباط التلقائي لا ينطبق إلا على تطبيقات Android وتطبيقات iOS.

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

تعرف على المزيد حول التسلسل الهرمي وبنية حسابات Google Analytics في وثائق Analytics .

طلب

اتصل بـ projects.addGoogleAnalytics .

في نص الطلب الخاص باستدعاء المثال الخاص بنا إلى project.addGoogleAnalytics ، سنحدد analyticsAccountId لحساب Google Analytics الخاص بنا. سيعمل هذا الاستدعاء على توفير موقع 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 الذي توفره في نص الطلب.

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

طلب

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

  • مطلوب:

    • locationId : الموقع الذي يتم فيه تخزين بياناتك لخدمات Google Cloud Platform التي تتطلب إعداد موقع، مثل 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 تلقائيا بعد الانتهاء.