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

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

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

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

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

للحصول على معلومات حول إدارة الوصول للAPI إدارة Firebase، قم بزيارة ثائق API سحابة إدارة الهوية الوصول (IAM) .

قبل ان تبدأ

قبل أن تبدأ، ستحتاج إلى تمكين API إدارة للمشروع غوغل Cloud و توليد وصولك المنوال .

قم بتمكين Management REST API لمشروع Google Cloud الخاص بك

إذا كنت لم تقم بذلك بالفعل، ستحتاج إلى تمكين API إدارة Firebase للاستخدام مع مشروع Cloud من Google.

  1. فتح API إدارة Firebase الصفحة في وحدة تحكم جوجل واجهات برمجة التطبيقات.
  2. عند المطالبة ، حدد مشروع Google Cloud الخاص بك.
  3. انقر فوق تمكين في صفحة API إدارة Firebase.

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

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

أولا، إذا لم تكن في بيئة جوجل الغيمة، تعيين 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 لمشروع جوجل الغيمة الموجودة في وحدة التحكم 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 ، ومشروع جوجل الغيمة لديها الآن خدمات Firebase. يحتوي على استجابة أيضا غيرها من المعلومات المفيدة حول الخاص بك تم إنشاؤه حديثا FirebaseProject ، شأنه في ذلك شأن projectNumber والافتراضية resources . في Operation يتم حذف تلقائيا بعد الانتهاء.

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

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

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

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

طلب

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

  • مطلوب:

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

    • 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 على العملية حتى قيمة 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 الروبوت التطبيق، مثل فريد Firebase appId . في Operation يتم حذف تلقائيا بعد الانتهاء.

أضف شهادات SHA

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

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

./gradlew signingReport

لمزيد من المعلومات، يرجى زيارة اجهات برمجة التطبيقات جوجل لالروبوت .

يمكنك ربط القائمة حساب Google Analytics لالموجودة لديك FirebaseProject برمجيا. لاحظ أنه يمكنك أيضا ربط مشروع Firebase الموجودة لديك إلى برنامج Google Analytics في التكاملات علامة التبويب إعدادات المشروع الخاص بك.

الدعوة إلى projects.addGoogleAnalytics تتطلب analytics_resource ، التي يمكن أن تكون إما analyticsAccountId أو analyticsPropertyId :

  • تحديد القائمة analyticsAccountId إلى توفير خاصية Google Analytics الجديدة ضمن الحساب المحدد وربط خاصية جديدة مع مشروع Firebase الخاص بك.

  • تحديد القائمة analyticsPropertyId لربط مواقع Google Analytics مع مشروع Firebase الخاص بك.

يمكنك أن تجد كل من analyticsAccountId وأي القائمة analyticsPropertyId على موقع جوجل تحليلات .

عند استدعاء 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 الجديدة والمنتسبين خاصية جديدة مع 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 الخاص بك وسوف تستخدم الغيمة Firestore، سحابة التخزين، أو التطبيق محرك التطبيقات، يمكنك وضع اللمسات الأخيرة على جوجل سحابة منصة (GCP) موقع المورد الافتراضي للمشروع الخاص بك برمجيا. لاحظ أنه يمكنك أيضا تحديد موقع في وحدة التحكم Firebase .

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

يدعو هذا defaultLocation.finalize طريقة يخلق تطبيق محرك التطبيقات مع الافتراضية دلو سحابة التخزين الموجودة في locationId التي توفرها في الجسم الطلب.

قد تم بالفعل تحديد موقع الموارد GCP الافتراضي إذا كان Project بالفعل تطبيق محرك التطبيقات أو هذا defaultLocation.finalize وطريقة تسمى سابقا.

طلب

دعوة projects.defaultLocation.finalize . فيما يلي كيفية إنشاء نص الطلب الخاص بك:

  • مطلوب:

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