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

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

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

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

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

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

قبل البدء

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

بعد ذلك، استخدِم حزمة 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 يمكنك استخدامه كمَعلمة طلب بحث للحصول على الصفحة التالية من projects.

في ما يلي مثال على نص الردّ لطلب 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.

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

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

يمكنك إضافة شهادات SHA إلى أي تطبيق حالي على Firebase لنظام التشغيل Android من خلال الاتصال بـ 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 بعد اكتمالها.