تتيح واجهة برمجة التطبيقات REST لإدارة Firebase الإعداد والإدارة الآليَّين لمشاريع Firebase، بما في ذلك موارد Firebase وتطبيقات Firebase في المشروع.
توضّح هذه النظرة العامة سير العمل العام لإضافة موارد وتطبيقات Firebase إلى مشروع Google Cloud حالي لا يستخدم خدمات Firebase بعد.
يمكنك الانتقال إلى أقسام معيّنة في هذه الصفحة إذا أردت فقط:
- إضافة خدمات Firebase إلى مشروعك
- إضافة تطبيقات Firebase إلى مشروع Firebase
- ربط مشروع Firebase بحساب على "إحصاءات Google"
قبل اتّباع أي خطوات في هذه الصفحة، تأكَّد من تفعيل واجهة برمجة التطبيقات.
للحصول على معلومات حول إدارة إمكانية الوصول إلى Firebase Management API، يُرجى الاطّلاع على مستندات Cloud Identity Access Management (IAM) API.
قبل البدء
قبل البدء، عليك تفعيل 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"
بعد ذلك، استخدِم مدير SDK في Firebase للحصول على رمز دخول من بيانات اعتماد حساب الخدمة:
import { initializeApp, applicationDefault } from "firebase-admin/app";
initializeApp();
async function getAccessToken() {
try {
const accessToken = await applicationDefault().getAccessToken();
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);
}
}
RESULT
يحتوي نص الاستجابة من طلب إلى 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']);
}
}
RESULT
تكون نتيجة طلب 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.
appStoreId: معرّف Apple الذي تم إنشاؤه تلقائيًا وتم تعيينه لتطبيقك من قِبل Apple حدِّدappStoreIdإذا سبق أن تم تعيينه من قِبل Apple.
في نص الطلب في المثال، سنستخدم فقط displayName وbundleId:
{
"displayName": "My Firebase iOS App",
"bundleId": "com.firebase.ios"
}
في ما يلي مثال على Node.js لإضافة تطبيق Firebase iOS إلى مشروع 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']);
}
}
RESULT
تكون نتيجة طلب 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 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']);
}
}
RESULT
تكون نتيجة طلب 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 الذي تم إنشاؤه حديثًا، مثل appId الفريد في Firebase. يتم حذف Operation تلقائيًا بعد
اكتمال العملية.
إضافة شهادات SHA
يمكنك إضافة شهادات SHA إلى أي تطبيق Android حالي على Firebase من خلال طلب
projects.androidApps.sha.create.
يجب أن يحتوي نص الطلب لطلب الإجراء هذا على حقل name فارغ.
تكون نتيجة هذا الطلب هي إنشاء مثيل جديد من ShaCertificate.
عند طلب projects.androidApps.sha.create، عليك تقديم تجزئة شهادة SHA-1 أو SHA-256 صالحة. يمكنك الحصول على تجزئة SHA لشهادة التوقيع
باستخدام أمر gradle signingReport:
./gradlew signingReport
لمزيد من المعلومات، يُرجى الانتقال إلى واجهات برمجة تطبيقات Google لنظام التشغيل 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']);
}
}
RESULT
تكون نتيجة طلب 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، مثل appId الفريد في Firebase. يتم حذف 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']);
}
}
RESULT
تكون نتيجة طلب 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 تلقائيًا بعد اكتمالها.