تتيح واجهة Firebase Management REST API إعداد مشاريع Firebase وإدارتها آليًا، بما في ذلك مَراجع Firebase وتطبيقات 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 Console.
- عندما يُطلب منك ذلك، اختَر مشروعك 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 للحصول على رمز دخول من بيانات اعتماد حساب الخدمة:
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);
}
}
النتيجة
يحتوي نصّ الاستجابة من استدعاء 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+
يمكنك إضافة تطبيق Firebase لنظام التشغيل iOS إلى مشروعك الحالي على Firebase.
الطلب
استدعِ
projects.iosApps.create.
في ما يلي كيفية إنشاء نصّ الطلب:
مطلوب:
bundleId: رقم تعريف الحزمة الأساسي لتطبيق iOS كما سيظهر في iOS App Store.
اختياري، ولكن يُنصح به:
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']);
}
}
النتيجة
نتيجة استدعاء 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. تحتوي الاستجابة أيضًا على معلومات مفيدة أخرى عن تطبيق Firebase لنظام التشغيل iOS الذي تم إنشاؤه حديثًا، مثل appId الفريد على Firebase. يتم حذف Operation تلقائيًا بعد اكتمالها.
Android
يمكنك إضافة تطبيق Firebase لنظام التشغيل Android إلى مشروعك الحالي على Firebase.
الطلب
استدعِ
projects.androidApps.create.
في ما يلي كيفية إنشاء نصّ الطلب:
مطلوب:
packageName: اسم الحزمة الأساسي لتطبيق Android كما سيظهر في Google Play Console.
اختياري، ولكن يُنصح به:
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 لنظام التشغيل Android الذي تم إنشاؤه حديثًا، مثل appId الفريد على Firebase. يتم حذف 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 for 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 للويب الذي تم إنشاؤه حديثًا، مثل 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 في مثالنا، سنحدّد analyticsAccountId لحسابنا على "إحصاءات Google". سيؤدي هذا الاستدعاء إلى توفير موقع جديد على "إحصاءات 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 تلقائيًا بعد اكتمالها.