Firebase Management REST API راهاندازی و مدیریت پروژههای Firebase از جمله منابع Firebase پروژه و برنامههای Firebase را امکانپذیر میکند.
این نمای کلی گردش کار کلی برای افزودن منابع و برنامههای Firebase به پروژه Google Cloud موجود را که در حال حاضر از خدمات Firebase استفاده نمیکند، توضیح میدهد.
اگر فقط می خواهید، می توانید به بخش های خاصی از این صفحه بروید:
- خدمات Firebase را به پروژه خود اضافه کنید
- برنامه های Firebase را به پروژه Firebase خود اضافه کنید
- پروژه Firebase خود را به یک حساب Google Analytics پیوند دهید
- مکان پیش فرض پروژه خود را نهایی کنید
قبل از انجام هر مرحله در این صفحه، مطمئن شوید که API را فعال کرده اید.
برای کسب اطلاعات در مورد مدیریت دسترسی برای Firebase Management API، از مستندات API مدیریت دسترسی هویت Cloud (IAM) دیدن کنید.
قبل از شروع
قبل از شروع، باید مدیریت API را برای پروژه Google Cloud خود فعال کنید و رمز دسترسی خود را ایجاد کنید .
مدیریت REST API را برای پروژه Google Cloud خود فعال کنید
اگر قبلاً این کار را نکردهاید، باید API مدیریت Firebase را برای استفاده با پروژه Google Cloud خود فعال کنید.
- صفحه Firebase Management API را در کنسول Google APIs باز کنید.
- وقتی از شما خواسته شد، پروژه Google Cloud خود را انتخاب کنید.
- در صفحه Firebase Management API روی Enable کلیک کنید.
کد دسترسی API خود را ایجاد کنید
در اینجا یک مثال برای Node.js آورده شده است که رمز دسترسی شما را بازیابی می کند.
ابتدا، اگر در محیط Google Cloud نیستید، متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS
را روی مسیر کلید حساب سرویس خود تنظیم کنید.
لینوکس یا macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
ویندوز
با PowerShell:
$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 را با استفاده از نام منبع projects/first-gcp-project
به First Cloud 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 را برای پروژه خود فراخوانی کنید، عملیات باید موفقیت آمیز باشد.
برای بررسی موفقیتآمیز بودن عملیات، میتوانید تا زمانی که مقدار done
true
باشد و response
آن از نوع FirebaseProject
باشد، operations.get
را روی عملیات فراخوانی کنید. اگر عملیات ناموفق باشد، 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 خود را به یک حساب 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
مرتبط با جریان داده). سپس، در صورت لزوم، جریانهای داده و برنامهها به هم مرتبط میشوند. توجه داشته باشید که این پیوند خودکار فقط برای برنامههای اندروید و برنامههای iOS اعمال میشود.اگر هیچ جریان داده متناظری برای برنامه های Firebase شما یافت نشد، جریان های داده جدیدی در ویژگی Google Analytics برای هر یک از برنامه های Firebase شما ارائه می شود. توجه داشته باشید که یک جریان داده جدید همیشه برای یک برنامه وب ارائه می شود حتی اگر قبلاً با یک جریان داده در ویژگی Analytics شما مرتبط باشد.
درباره سلسله مراتب و ساختار حساب های Google Analytics در اسناد Analytics بیشتر بیاموزید.
درخواست
با projects.addGoogleAnalytics
تماس بگیرید.
در بدنه درخواست برای فراخوانی مثال ما به project.addGoogleAnalytics
، ما حساب Google Analytics analyticsAccountId
خود را مشخص میکنیم. این تماس یک ویژگی 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 را برای پروژه خود فراخوانی کنید، عملیات باید موفقیت آمیز باشد.
برای بررسی موفقیتآمیز بودن عملیات، میتوانید تا زمانی که مقدار done
true
باشد و response
از نوع analyticsDetails
باشد، operations.get
را روی عملیات فراخوانی کنید. اگر عملیات ناموفق باشد، 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
که در بدنه درخواست ارائه می کنید، ایجاد می کند.
اگر Project
قبلاً یک برنامه App Engine داشته باشد یا این روش defaultLocation.finalize
قبلاً فراخوانی شده باشد، ممکن است مکان پیشفرض منبع GCP قبلاً مشخص شده باشد.
درخواست
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 را برای پروژه خود فراخوانی کنید، عملیات باید موفقیت آمیز باشد.
برای بررسی موفقیتآمیز بودن عملیات، میتوانید عملیات را تا زمانی که مقدار done
true
باشد و response
آن از نوع google.protobuf.Empty
باشد، در operations.get
فراخوانی کنید. اگر عملیات ناموفق باشد، error
بدنه پاسخ از نوع google.rpc.Status
خواهد بود. Operation
پس از اتمام به طور خودکار حذف می شود.