تتيح واجهة برمجة تطبيقات Firebase Management REST الإعداد البرمجي وإدارة مشاريع Firebase، بما في ذلك موارد Firebase الخاصة بالمشروع وتطبيقات Firebase.
توضح هذه النظرة العامة سير العمل العام لإضافة موارد وتطبيقات Firebase إلى مشروع Google Cloud الحالي الذي لا يستخدم خدمات Firebase حاليًا.
يمكنك الانتقال إلى أقسام معينة من هذه الصفحة إذا كنت تريد فقط:
- أضف خدمات Firebase إلى مشروعك
- أضف تطبيقات Firebase إلى مشروع Firebase الخاص بك
- اربط مشروع Firebase الخاص بك بحساب Google Analytics
- قم بإنهاء الموقع الافتراضي لمشروعك
قبل اتباع أي خطوات في هذه الصفحة، تأكد من تمكين واجهة برمجة التطبيقات (API) .
للحصول على معلومات حول إدارة الوصول لواجهة برمجة تطبيقات Firebase Management API، تفضل بزيارة وثائق واجهة برمجة التطبيقات Cloud Identity Access Management (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.
قم بإنشاء رمز وصول API الخاص بك
فيما يلي مثال لـ Node.js الذي يسترد رمز الوصول الخاص بك.
أولاً، إذا لم تكن في بيئة Google Cloud، فقم بتعيين متغير البيئة GOOGLE_APPLICATION_CREDENTIALS
على المسار إلى مفتاح حساب الخدمة الخاص بك.
لينكس أو ماك
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 إلى مشروع 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.
-
اختياري، ولكن يوصى به:
-
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
:
./gradlew signingReport
لمزيد من المعلومات، تفضل بزيارة Google APIs لنظام Android .
ربط مشروع Firebase الخاص بك بحساب Google Analytics (اختياري)
يمكنك ربط حساب Google Analytics موجود بحسابك الحالي على FirebaseProject
برمجيًا. لاحظ أنه يمكنك أيضًا ربط مشروع Firebase الحالي ببرنامج Google Analytics في علامة التبويب عمليات التكامل في إعدادات المشروع .
يتطلب استدعاء projects.addGoogleAnalytics
وجود analytics_resource
، والذي يمكن أن يكون إما analyticsAccountId
أو analyticsPropertyId
:
حدد
analyticsAccountId
موجودًا لتوفير موقع Google Analytics جديد ضمن الحساب المحدد وربط الموقع الجديد بمشروع Firebase الخاص بك.حدد
analyticsPropertyId
الحالي لربط موقع Google Analytics بمشروع Firebase الخاص بك.
يمكنك العثور على analyticsAccountId
الخاص بك وأي analyticsPropertyId
موجود على موقع Google Analytics على الويب .
عند الاتصال projects.addGoogleAnalytics
:
يحدد الفحص الأول ما إذا كانت أي مصادر بيانات موجودة في موقع Google Analytics تتوافق مع أي تطبيقات Firebase موجودة في
FirebaseProject
(استنادًا إلىpackageName
أوbundleId
المرتبط بمصدر البيانات). وبعد ذلك، حسب الاقتضاء، يتم ربط مصادر البيانات والتطبيقات. لاحظ أن هذا الارتباط التلقائي لا ينطبق إلا على تطبيقات Android وتطبيقات iOS.إذا لم يتم العثور على مصادر بيانات مقابلة لتطبيقات Firebase، فسيتم توفير مصادر بيانات جديدة في موقع Google Analytics لكل تطبيق من تطبيقات Firebase. لاحظ أنه يتم دائمًا توفير مصدر بيانات جديد لتطبيق ويب حتى لو كان مرتبطًا مسبقًا بمصدر بيانات في موقع Analytics.
تعرف على المزيد حول التسلسل الهرمي وبنية حسابات Google Analytics في وثائق Analytics .
طلب
اتصل بـ projects.addGoogleAnalytics
.
في نص الطلب الخاص باستدعاء المثال الخاص بنا إلى project.addGoogleAnalytics
، سنحدد analyticsAccountId
لحساب Google Analytics الخاص بنا. سيعمل هذا الاستدعاء على توفير موقع 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 الخاص بك سيستخدم Cloud Firestore أو Cloud Storage أو تطبيق App Engine، فيمكنك إنهاء موقع مورد Google Cloud Platform (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
: الموقع الذي يتم فيه تخزين بياناتك لخدمات Google Cloud Platform التي تتطلب إعداد موقع، مثل 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
تلقائيا بعد الانتهاء.