查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

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

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

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

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

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

للحصول على معلومات حول إدارة الوصول لـ 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 على المسار إلى مفتاح حساب الخدمة.

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

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

للتحقق مما إذا كانت العملية ناجحة ، يمكنك استدعاء FirebaseProject في operations.get حتى done قيمة "تم" وتكون response من النوع true . إذا فشلت العملية ، يتم تعيين error الخاص بها على google.rpc.Status .

هذا هو نص الاستجابة لاستدعاء operations.get Call:

{
  "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. تحتوي الاستجابة أيضًا على معلومات مفيدة أخرى حول projectNumber FirebaseProject resources . يتم حذف Operation تلقائيًا بعد الانتهاء.

أضف تطبيقات Firebase إلى مشروعك

يمكن للعديد من التطبيقات المختلفة استخدام FirebaseProject ، بما في ذلك تطبيقات iOS و Android وتطبيقات الويب. في هذا القسم ، ستتعلم كيفية إضافة تطبيقات Firebase إلى FirebaseProject الحالي برمجيًا. لاحظ أنه يمكنك أيضًا إضافة تطبيقات Firebase إلى مشروع Firebase الحالي في وحدة تحكم Firebase .

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

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

طلب

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

  • مطلوب:

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

    • اسم displayName : اسم عرض التطبيق المعين من قبل المستخدم. هذه القيمة مفيدة للعثور على تطبيقك لاحقًا في وحدة تحكم Firebase .

في نص الطلب لمثالنا ، packageName و displayName :

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

في ما يلي مثال على Node.js لإضافة تطبيق Firebase Android إلى مشروع 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 في operations.get حتى true القيمة done وتكون response من النوع AndroidApp . إذا فشلت العملية ، يتم تعيين error الخاص بها على google.rpc.Status .

هذا هو نص الاستجابة لاستدعاء operations.get Call:

{
  "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 الذي تم إنشاؤه حديثًا ، مثل appId الفريد. يتم حذف Operation تلقائيًا بعد الانتهاء.

أضف شهادات SHA

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

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

./gradlew signingReport

لمزيد من المعلومات ، قم بزيارة Google APIs لنظام Android .

يمكنك ربط حساب 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 في operations.get حتى true قيمة done وتكون response من النوع analyticsDetails . إذا فشلت العملية ، يتم تعيين error الخاص بها على google.rpc.Status .

هذا هو نص الاستجابة لاستدعاء operations.get Call:

{
  "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 التي توفرها في نص الطلب.

ربما تم تحديد موقع مورد GCP الافتراضي بالفعل إذا كان 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 لمشروعك ، يجب أن تكون العملية ناجحة.

للتحقق مما إذا كانت العملية ناجحة ، يمكنك استدعاء true operations.get done تم" وتكون response من النوع google.protobuf.Empty . إذا لم تنجح العملية ، فسيكون error نص الاستجابة من النوع google.rpc.Status . يتم حذف Operation تلقائيًا بعد الانتهاء.