تعمل Firebase Management REST API على تفعيل هي عملية الإعداد والإدارة الآلية لمشاريع Firebase، بما في ذلك موارد Firebase وتطبيقات Firebase.
توضح هذه النظرة العامة سير العمل العام لإضافة موارد Firebase التطبيقات إلى Google Cloud الحالي المشروع التي لا تستخدم خدمات Firebase حاليًا
يمكنك الانتقال سريعًا إلى أقسام معينة من هذه الصفحة إذا كنت تريد فقط:
- إضافة خدمات Firebase إلى مشروعك
- إضافة تطبيقات Firebase إلى مشروعك على Firebase
- ربط مشروعك على Firebase بحساب على "إحصاءات Google"
- إنهاء الموقع الجغرافي التلقائي لمشروعك
قبل اتباع أي خطوات واردة في هذه الصفحة، تأكَّد من تفعيل واجهة برمجة التطبيقات
للحصول على معلومات عن إدارة أذونات الوصول في Firebase Management API، يُرجى الانتقال إلى واجهة برمجة تطبيقات إدارة الوصول إلى Cloud Identity (IAM) ذات الصلة.
قبل البدء
قبل البدء، يجب تفعيل 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 للحصول على رمز دخول من خدمتك بيانات اعتماد الحساب:
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.
يمكنك إضافة تطبيق 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 لإضافة تطبيق 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 APIs لتطبيق Android
ربط مشروعك على 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
صحيح والنوع response
هو analyticsDetails
، لا يتم
تم ربط FirebaseProject
الآن بحساب "إحصاءات Google" المحدّد. تشير رسالة الأشكال البيانية
ويتم حذف "Operation
" تلقائيًا بعد اكتمال العملية.
إكمال الموقع الجغرافي التلقائي لمشروعك (اختياري)
إذا كان مشروعك في Firebase سيستخدم Cloud Firestore أو Cloud Storage أو تطبيق App Engine، يمكنك إنهاء سياسة Google Cloud التلقائية الموقع الجغرافي لمورد النظام الأساسي (GCP) لمشروعك آليًا. لاحظ أنه يمكنك أيضًا تحديد موقع في الـ وحدة تحكّم Firebase.
قبل تعيين هذا الموقع، راجع تحديد مواقع
المشروع للحصول على معلومات حول الموقع الأفضل
لمشروعك. يجب عليك أيضًا استدعاء
projects.availableLocations
لعرض قائمة بالمواقع الصالحة لمشروعك لأنه إذا
تنتمي إلى مؤسسة على Google Cloud، ست حينها سياسات مؤسستك
قد تفرض قيودًا على المواقع الجغرافية
صالحة لمشروعك.
يؤدي استدعاء هذه الطريقة defaultLocation.finalize
إلى إنشاء App Engine
تطبيق يحتوي على Cloud Storage الإعداد التلقائي
حزمة
الموجودة في
locationId
التي تقدّمها في نص الطلب
ربما تم تحديد الموقع التلقائي لمورد Google Cloud Platform إذا كان
لدى 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 لمشروعك، يجب
ناجحًا.
للتأكّد من نجاح العملية، يمكنك الاتصال بـ operations.get
من خلال
العملية حتى تصبح قيمة done
هي true
ويكون response
من النوع
google.protobuf.Empty
في حال تعذُّر العملية، سيُظهر نص الاستجابة
سيكون error
من النوع google.rpc.Status
. يتم ضبط Operation
تلقائيًا
سيتم حذفها بعد الانتهاء.