تمكّن واجهة Firebase Management REST API الإعداد والإدارة الآليين لمشاريع Firebase ، بما في ذلك موارد Firebase للمشروع وتطبيقات Firebase.
توضح هذه النظرة العامة سير العمل العام لإضافة موارد وتطبيقات Firebase إلى مشروع Google Cloud الحالي الذي لا يستخدم خدمات Firebase حاليًا.
يمكنك الانتقال إلى أقسام محددة من هذه الصفحة إذا كنت تريد فقط:
- أضف خدمات Firebase إلى مشروعك
- أضف تطبيقات Firebase إلى مشروع Firebase
- اربط مشروع Firebase بحساب Google Analytics
- قم بإنهاء الموقع الافتراضي لمشروعك
قبل اتباع أي خطوات في هذه الصفحة ، تأكد من تمكين واجهة برمجة التطبيقات .
للحصول على معلومات حول إدارة الوصول لـ 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
على المسار إلى مفتاح حساب الخدمة.
Linux أو macOS
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 لمشروعك ، يجب أن تكون العملية ناجحة.
للتحقق مما إذا كانت العملية ناجحة ، يمكنك استدعاء FirebaseProject
في operations.get
حتى done
قيمة "تم" وتكون response
من النوع true
. إذا فشلت العملية ، يتم تعيين error
الخاص بها على google.rpc.Status
.
هذا هو نص الاستجابة لاستدعاء operations.get
Call:
{
"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. تحتوي الاستجابة أيضًا على معلومات مفيدة أخرى حول projectNumber
FirebaseProject
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 في operations.get
حتى true
القيمة done
وتكون response
من النوع AndroidApp
. إذا فشلت العملية ، يتم تعيين error
الخاص بها على google.rpc.Status
.
هذا هو نص الاستجابة لاستدعاء operations.get
Call:
{
"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
الفريد. يتم حذف Operation
تلقائيًا بعد الانتهاء.
أضف شهادات SHA
يمكنك إضافة شهادات SHA إلى أي تطبيق Firebase Android موجود عن طريق الاتصال projects.androidApps.sha.create
.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 في operations.get
حتى true
قيمة done
وتكون response
من النوع analyticsDetails
. إذا فشلت العملية ، يتم تعيين error
الخاص بها على google.rpc.Status
.
هذا هو نص الاستجابة لاستدعاء operations.get
Call:
{
"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
التي توفرها في نص الطلب.
ربما تم تحديد موقع مورد GCP الافتراضي بالفعل إذا كان 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 لمشروعك ، يجب أن تكون العملية ناجحة.
للتحقق مما إذا كانت العملية ناجحة ، يمكنك استدعاء true
operations.get
done
تم" وتكون response
من النوع google.protobuf.Empty
. إذا لم تنجح العملية ، فسيكون error
نص الاستجابة من النوع google.rpc.Status
. يتم حذف Operation
تلقائيًا بعد الانتهاء.