تتيح Firebase Management REST API إعداد مشاريع Firebase وإدارتها آليًا، بما في ذلك موارد Firebase وتطبيقات Firebase الخاصة بالمشروع.
توضّح هذه النظرة العامة سير العمل العام لإضافة موارد وتطبيقات Firebase إلى Google Cloud مشروع حالي لا يستخدم خدمات Firebase بعد.
يمكنك الانتقال إلى أقسام معيّنة من هذه الصفحة إذا أردت فقط:
- إضافة خدمات Firebase إلى مشروعك
- إضافة تطبيقات Firebase إلى مشروعك على Firebase
- ربط مشروعك على Firebase بحساب على "إحصاءات Google"
قبل اتّباع أي خطوات في هذه الصفحة، تأكَّد من تفعيل واجهة برمجة التطبيقات.
للحصول على معلومات حول إدارة الوصول إلى Firebase Management API، يُرجى الانتقال إلى مستندات واجهة برمجة التطبيقات الخاصة بخدمة "إدارة الهوية وإمكانية الوصول" (IAM) في Cloud Identity.
قبل البدء
قبل البدء، عليك تفعيل Management API لمشروعك Google Cloud وإنشاء رمز الدخول.
تفعيل Management REST API لمشروعك Google Cloud
إذا لم يسبق لك إجراء ذلك، عليك تفعيل Firebase Management API لاستخدامها مع مشروع Google Cloud.
- افتح صفحة Firebase Management API في وحدة تحكّم Google APIs.
- عندما يُطلب منك ذلك، اختَر مشروع Google Cloud.
- انقر على تفعيل في صفحة 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
يمكنك استخدامه كمَعلمة طلب بحث للحصول على الصفحة التالية من المشاريع.
في ما يلي مثال على نص الردّ على طلب 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.
iOS+
يمكنك إضافة تطبيق iOS على Firebase إلى مشروعك الحالي على Firebase.
طلب
اتّصِل على
projects.iosApps.create
.
في ما يلي كيفية إنشاء نص الطلب:
مطلوب:
-
bundleId
: هو المعرّف الأساسي للحزمة في تطبيق iOS كما يظهر في متجر تطبيقات iOS.
-
اختياري، ولكن ننصح به:
displayName
: هو الاسم المعروض الذي يحدّده المستخدم للتطبيق، وهو قيمة مفيدة للعثور على التطبيق لاحقًا في Firebase console.
appStoreId
: هو معرّف Apple الذي يتم إنشاؤه تلقائيًا ويخصصه تطبيقك من خلال Apple. حدِّدappStoreId
إذا سبق أن خصّصته Apple.
في نص الطلب الخاص بمثالنا، سنستخدم displayName
وbundleId
فقط:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
في ما يلي مثال على Node.js لإضافة تطبيق iOS على Firebase إلى مشروعك على Firebase:
const fetch = require('node-fetch');
async function addIosApp(projectId, displayName, bundleId) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/iosApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'bundleId': bundleId
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
النتيجة
نتيجة طلب projects.iosApps.create
هي
Operation
. قبل أن تتمكّن من استدعاء نقاط نهاية أخرى ذات صلة بـ Firebase لمشروعك، يجب أن تنجح العملية.
للتحقّق من نجاح العملية، يمكنك استدعاء
operations.get
في العملية إلى أن تصبح قيمة done
هي true
ويكون نوع response
هو IosApp
. إذا تعذّر إكمال العملية، سيتم ضبط error
على google.rpc.Status
.
في ما يلي نص الردّ على طلب operations.get
:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.IosApp",
"name": "projects/first-cloud-project/iosApps/...",
"appId": "...",
"displayName": "My Firebase iOS App",
"projectId": "first-cloud-project",
"bundleId": "com.firebase.ios"
}
}
بما أنّ done
هو true
، ونوع response
هو IosApp
، أصبح FirebaseProject
يتضمّن IosApp
. يتضمّن الرد أيضًا معلومات مفيدة أخرى حول تطبيق iOS الذي تم إنشاؤه حديثًا على Firebase، مثل معرّف Firebase الفريد appId
. يتم حذف Operation
تلقائيًا بعد اكتمال العملية.
Android
يمكنك إضافة تطبيق Android على Firebase إلى مشروعك الحالي على Firebase.
طلب
اتّصِل على
projects.androidApps.create
.
في ما يلي كيفية إنشاء نص الطلب:
مطلوب:
packageName
: اسم الحزمة الأساسي لتطبيق Android كما يظهر في Google Play Developer Console.
اختياري، ولكن ننصح به:
displayName
: هو الاسم المعروض الذي يحدّده المستخدم للتطبيق. وتكون هذه القيمة مفيدة للعثور على تطبيقك لاحقًا في Firebase console.
في نص الطلب الخاص بمثالنا، سنستخدم 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 API لنظام التشغيل Android.
الويب
يمكنك إضافة تطبيق إنترنت على Firebase إلى مشروعك الحالي على Firebase.
طلب
اتّصِل على
projects.webApps.create
.
في ما يلي كيفية إنشاء نص الطلب:
اختياري:
displayName
: الاسم المعروض الذي يحدّده المستخدم للتطبيق. هذه القيمة مفيدة للعثور على تطبيقك لاحقًا في وحدة تحكّم Firebase.
غير مقترَحة:
-
appUrls
: عناوين URL المؤهَّلة بالكامل التي تتم استضافة التطبيق عليها. عند ربط تطبيق ويب على Firebase بموقع إلكتروني Firebase Hosting، تملأ Firebase هذه الحقول تلقائيًا، لذا يجب تركها فارغة في نص الطلب.
-
سنحدّد displayName
في نص الطلب فقط في مثالنا:
{
"displayName": "My Firebase Web App"
}
في ما يلي مثال على Node.js لإضافة تطبيق إنترنت على Firebase إلى مشروعك على Firebase:
const fetch = require('node-fetch');
async function addWebApp(projectId, displayName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/webApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
النتيجة
نتيجة طلب projects.webApps.create
هي
Operation
. قبل أن تتمكّن من استدعاء نقاط نهاية أخرى ذات صلة بـ Firebase لمشروعك، يجب أن تنجح العملية.
للتحقّق من نجاح العملية، يمكنك استدعاء
operations.get
في العملية إلى أن تصبح قيمة done
هي true
ويكون نوع response
هو WebApp
. إذا تعذّر إكمال العملية، سيتم ضبط error
على google.rpc.Status
.
في ما يلي نص الردّ على طلب operations.get
:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.WebApp",
"name": "projects/first-cloud-project/webApps/...",
"appId": "...",
"displayName": "My Firebase Web App",
"projectId": "first-cloud-project"
}
}
بما أنّ done
هو true
، ونوع response
هو WebApp
، أصبح FirebaseProject
يتضمّن WebApp
. يتضمّن الرد أيضًا معلومات مفيدة أخرى حول تطبيق الويب الذي أنشأته حديثًا على Firebase، مثل معرّف Firebase الفريد appId
. يتم حذف Operation
تلقائيًا بعد اكتمال العملية.
ربط مشروعك على Firebase بحساب على "إحصاءات Google" (اختياري)
يمكنك ربط حساب حالي على "إحصاءات Google" ببرنامجك الحالي بشكل آلي.FirebaseProject
يُرجى العِلم أنّه يمكنك أيضًا ربط مشروعك الحالي على Firebase بحساب على "إحصاءات Google" في علامة التبويب عمليات الدمج ضمن إعدادات المشروع.
يتطلّب الاتصال بـ projects.addGoogleAnalytics
توفّر analytics_resource
،
والتي يمكن أن تكون analyticsAccountId
أو analyticsPropertyId
:
حدِّد
analyticsAccountId
حاليًا لتوفير موقع جديد على "إحصاءات Google" ضمن الحساب المحدّد وربط الموقع الجديد بمشروعك على Firebase.حدِّد
analyticsPropertyId
حاليًا لربط الموقع على "إحصاءات Google" بمشروعك على Firebase.
يمكنك العثور على كل من analyticsAccountId
وأي analyticsPropertyId
حالي على موقع "إحصاءات Google" الإلكتروني.
عند الاتصال بالرقم projects.addGoogleAnalytics
:
يحدّد التحقّق الأول ما إذا كانت أي مصادر بيانات حالية في موقع "إحصاءات Google" تتطابق مع أي تطبيقات حالية على Firebase في
FirebaseProject
(استنادًا إلىpackageName
أوbundleId
المرتبطَين بمصدر البيانات). بعد ذلك، يتم ربط مصادر البيانات والتطبيقات، حسب الاقتضاء. يُرجى العِلم أنّ الربط التلقائي هذا ينطبق فقط على تطبيقات Android وتطبيقات iOS.في حال عدم العثور على مصادر بيانات مقابلة لتطبيقاتك على 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
هي true ونوع response
هو analyticsDetails
، تم ربط FirebaseProject
الآن بحساب "إحصاءات Google" المحدّد. يتم حذف
Operation
تلقائيًا بعد اكتمالها.