फायरबेस प्रबंधन आरईएसटी एपीआई प्रोजेक्ट के फायरबेस संसाधनों और फायरबेस ऐप्स सहित फायरबेस परियोजनाओं के प्रोग्रामेटिक सेटअप और प्रबंधन को सक्षम बनाता है।
यह ओवरव्यू किसी मौजूदा Google क्लाउड प्रोजेक्ट में Firebase संसाधनों और ऐप्स को जोड़ने के सामान्य वर्कफ़्लो का वर्णन करता है जो वर्तमान में Firebase सेवाओं का उपयोग नहीं करता है।
आप इस पृष्ठ के विशिष्ट अनुभागों पर जा सकते हैं यदि आप केवल यह करना चाहते हैं:
- अपने प्रोजेक्ट में Firebase सेवाएं जोड़ें
- अपने Firebase प्रोजेक्ट में Firebase ऐप्लिकेशन जोड़ें
- अपने Firebase प्रोजेक्ट को Google Analytics खाते से लिंक करें
- अपने प्रोजेक्ट के डिफ़ॉल्ट स्थान को अंतिम रूप दें
इस पृष्ठ पर किसी भी चरण का पालन करने से पहले, सुनिश्चित करें कि आपने एपीआई को सक्षम किया है ।
Firebase प्रबंधन API के लिए एक्सेस प्रबंधन के बारे में जानकारी के लिए, Cloud Identity Access Management (IAM) API दस्तावेज़ देखें ।
शुरू करने से पहले
शुरू करने से पहले, आपको अपने Google क्लाउड प्रोजेक्ट के लिए प्रबंधन API को सक्षम करना होगा और अपना एक्सेस टोकन जेनरेट करना होगा ।
अपने Google क्लाउड प्रोजेक्ट के लिए प्रबंधन REST API सक्षम करें
यदि आपने पहले से ऐसा नहीं किया है, तो आपको अपने Google क्लाउड प्रोजेक्ट के साथ उपयोग के लिए Firebase प्रबंधन API को सक्षम करना होगा।
- Google API कंसोल में Firebase प्रबंधन API पृष्ठ खोलें।
- संकेत मिलने पर, अपना Google क्लाउड प्रोजेक्ट चुनें।
- Firebase प्रबंधन API पृष्ठ पर सक्षम करें क्लिक करें.
अपना एपीआई एक्सेस टोकन जेनरेट करें
यहां Node.js के लिए एक उदाहरण दिया गया है जो आपके एक्सेस टोकन को पुनः प्राप्त करता है।
सबसे पहले, यदि आप Google क्लाउड परिवेश में नहीं हैं, तो GOOGLE_APPLICATION_CREDENTIALS
परिवेश चर को अपनी सेवा खाता कुंजी के पथ पर सेट करें।
लिनक्स या 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 व्यवस्थापक 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 क्लाउड प्रोजेक्ट ढूंढ सकते हैं जो Firebase सेवाओं को जोड़ने के लिए उपलब्ध हैं।
प्रार्थना
availableProjects.list
Projects.list पर कॉल करें। इस कॉल के लिए अनुरोध का मुख्य भाग खाली होना चाहिए।
यहां उपलब्ध Google क्लाउड प्रोजेक्ट की सूची का अनुरोध करने के लिए Node.js के लिए एक उदाहरण दिया गया है:
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
Projects.list पर प्रतिक्रिया निकाय में ProjectInfo
ऑब्जेक्ट्स की एक सूची है। यदि परियोजनाओं की सूची बहुत लंबी है, तो प्रतिक्रिया निकाय में एक nextPageToken
भी होता है जिसका उपयोग आप प्रोजेक्ट के अगले पृष्ठ को प्राप्त करने के लिए क्वेरी पैरामीटर के रूप में कर सकते हैं।
यहाँ एक availableProjects.list
Projects.list कॉल का एक उदाहरण प्रतिक्रिया निकाय है:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
इस उदाहरण प्रतिक्रिया में दो Google क्लाउड प्रोजेक्ट हैं जिनमें Firebase सेवाओं को जोड़ा जा सकता है। ध्यान दें कि project
फ़ील्ड किसी प्रोजेक्ट के लिए विश्व स्तर पर अद्वितीय संसाधन नाम प्रदान करता है।
आप Firebase सेवाओं को जोड़ने या अपने प्रोजेक्ट में ऐप्स जोड़ने के लिए availableProjects.list
Projects.list से प्रतिक्रिया में सूचीबद्ध किसी भी project
मान का उपयोग कर सकते हैं।
अगले भाग में, हम projects/first-gcp-project
रिसोर्स नाम का उपयोग करके First Cloud Project
में फायरबेस सेवाओं को जोड़ेंगे।
अपने प्रोजेक्ट में Firebase सेवाएं जोड़ें
Google क्लाउड प्रोजेक्ट Firebase द्वारा दी जाने वाली सेवाओं का लाभ उठा सकते हैं। इस अनुभाग में, आप सीखेंगे कि अपने मौजूदा Google क्लाउड प्रोजेक्ट में प्रोग्रामेटिक रूप से फायरबेस सेवाओं को कैसे जोड़ा जाए। ध्यान दें कि आप Firebase कंसोल में अपने मौजूदा Google क्लाउड प्रोजेक्ट में Firebase सेवाओं को भी जोड़ सकते हैं।
प्रार्थना
कॉल projects.addFirebase
। इस कॉल के लिए अनुरोध का मुख्य भाग खाली होना चाहिए।
आपके Google क्लाउड प्रोजेक्ट में Firebase सेवाओं को जोड़ने के लिए Node.js के लिए एक उदाहरण यहां दिया गया है:
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
है। इससे पहले कि आप अपने प्रोजेक्ट के लिए अन्य फायरबेस-संबंधित एंडपॉइंट्स को कॉल कर सकें, ऑपरेशन सफल होना चाहिए।
यह जांचने के लिए कि क्या ऑपरेशन सफल है, आप 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 क्लाउड प्रोजेक्ट में अब Firebase सेवाएं हैं। प्रतिक्रिया में आपके नए बनाए गए FirebaseProject
के बारे में अन्य उपयोगी जानकारी भी शामिल है, जैसे कि इसका projectNumber
और इसके डिफ़ॉल्ट resources
। Operation
पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।
अपने प्रोजेक्ट में Firebase ऐप्लिकेशन जोड़ें
आईओएस, एंड्रॉइड और वेब ऐप सहित कई अलग-अलग ऐप FirebaseProject
का उपयोग कर सकते हैं। इस अनुभाग में, आप सीखेंगे कि अपने मौजूदा FirebaseProject
में प्रोग्रामेटिक रूप से फायरबेस ऐप्स कैसे जोड़ें। ध्यान दें कि आप Firebase कंसोल में अपने मौजूदा Firebase प्रोजेक्ट में Firebase ऐप्स भी जोड़ सकते हैं।
अपने फायरबेस प्रोजेक्ट में जोड़ने के लिए एक प्रकार का फायरबेस ऐप चुनें।
आप अपने मौजूदा फायरबेस प्रोजेक्ट में एक फायरबेस एंड्रॉइड ऐप जोड़ सकते हैं।
प्रार्थना
projects.androidApps.create
पर कॉल करें। अपना अनुरोध निकाय बनाने का तरीका यहां दिया गया है:
आवश्यक:
-
packageName
: एंड्रॉइड ऐप का कैननिकल पैकेज नाम जैसा कि यह Google Play डेवलपर कंसोल में दिखाई देगा।
-
वैकल्पिक, लेकिन अनुशंसित:
-
displayName
: ऐप का उपयोगकर्ता द्वारा निर्दिष्ट प्रदर्शन नाम। यह मान आपके ऐप को बाद में Firebase कंसोल में खोजने के लिए उपयोगी है।
-
हमारे उदाहरण के लिए अनुरोध निकाय में, हम packageName
और displayName
का उपयोग करेंगे:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
यहां Node.js के लिए अपने Firebase प्रोजेक्ट में एक Firebase Android ऐप जोड़ने का एक उदाहरण दिया गया है:
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
है। इससे पहले कि आप अपने प्रोजेक्ट के लिए अन्य फायरबेस-संबंधित एंडपॉइंट्स को कॉल कर सकें, ऑपरेशन सफल होना चाहिए।
यह जांचने के लिए कि क्या ऑपरेशन सफल है, आप 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 ऐप के बारे में अन्य उपयोगी जानकारी भी शामिल है, जैसे कि अद्वितीय Firebase appId
। Operation
पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।
SHA प्रमाणपत्र जोड़ें
आप किसी भी मौजूदा Firebase Android ऐप में projects.androidApps.sha.create
पर कॉल करके SHA प्रमाणपत्र जोड़ सकते हैं। इस विधि कॉल के लिए अनुरोध निकाय में एक खाली name
फ़ील्ड होना चाहिए। इस कॉल का परिणाम ShaCertificate
का एक नया बनाया गया उदाहरण है।
projects.androidApps.sha.create
को कॉल करते समय, आपको एक मान्य SHA-1 या SHA-256 प्रमाणपत्र हैश प्रदान करना होगा। आप अपने हस्ताक्षर प्रमाणपत्र का SHA हैश signingReport
कमांड के साथ प्राप्त कर सकते हैं:
./gradlew signingReport
अधिक जानकारी के लिए, Android के लिए Google API पर जाएं।
अपने Firebase प्रोजेक्ट को Google Analytics खाते से लिंक करें (वैकल्पिक)
आप किसी मौजूदा Google Analytics खाते को अपने मौजूदा FirebaseProject
से प्रोग्रामेटिक रूप से लिंक कर सकते हैं। ध्यान दें कि आप अपनी प्रोजेक्ट सेटिंग्स के एकीकरण टैब में अपने मौजूदा फायरबेस प्रोजेक्ट को Google Analytics से भी लिंक कर सकते हैं।
projects.addGoogleAnalytics
को कॉल करने के लिए एक analytics_resource
की आवश्यकता होती है, जो या तो एक analyticsAccountId
या एक analyticsPropertyId
हो सकता है:
निर्दिष्ट खाते में एक नई Google Analytics प्रॉपर्टी का प्रावधान करने के लिए एक मौजूदा
analyticsAccountId
निर्दिष्ट करें और नई प्रॉपर्टी को अपने Firebase प्रोजेक्ट से संबद्ध करें.Google Analytics प्रॉपर्टी को अपने Firebase प्रोजेक्ट से जोड़ने के लिए मौजूदा
analyticsPropertyId
निर्दिष्ट करें.
आप Google Analytics वेबसाइट पर अपना analyticsAccountId
और कोई भी मौजूदा analyticsPropertyId
दोनों ढूंढ सकते हैं।
जब आप projects.addGoogleAnalytics
को कॉल करते हैं:
पहली जांच यह निर्धारित करती है कि Google Analytics प्रॉपर्टी में कोई भी मौजूदा डेटा स्ट्रीम आपके
FirebaseProject
(डेटा स्ट्रीम से जुड़ेpackageName
याbundleId
आईडी के आधार पर) के किसी भी मौजूदा Firebase ऐप्लिकेशन से मेल खाती है या नहीं। फिर, जैसा लागू हो, डेटा स्ट्रीम और ऐप्स लिंक हो जाते हैं। ध्यान दें कि यह ऑटो-लिंकिंग केवल Android ऐप्स और iOS ऐप्स पर लागू होता है।यदि आपके Firebase ऐप्स के लिए कोई संगत डेटा स्ट्रीम नहीं मिलती है, तो आपके प्रत्येक Firebase ऐप्स के लिए Google Analytics प्रॉपर्टी में नई डेटा स्ट्रीम का प्रावधान किया जाता है। ध्यान दें कि वेब ऐप के लिए हमेशा एक नई डेटा स्ट्रीम का प्रावधान किया जाता है, भले ही वह पहले आपकी Analytics प्रॉपर्टी में डेटा स्ट्रीम से संबद्ध हो।
Analytics दस्तावेज़ीकरण में Google Analytics खातों के पदानुक्रम और संरचना के बारे में अधिक जानें।
प्रार्थना
projects.addGoogleAnalytics
को कॉल करें।GoogleAnalytics जोड़ें।
हमारे उदाहरण कॉल के लिए अनुरोध निकाय में 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
है। इससे पहले कि आप अपने प्रोजेक्ट के लिए अन्य फायरबेस-संबंधित एंडपॉइंट्स को कॉल कर सकें, ऑपरेशन सफल होना चाहिए।
यह जांचने के लिए कि क्या ऑपरेशन सफल है, आप 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
पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।
अपने प्रोजेक्ट के डिफ़ॉल्ट स्थान को अंतिम रूप दें (वैकल्पिक)
अगर आपका फायरबेस प्रोजेक्ट क्लाउड फायरस्टोर, क्लाउड स्टोरेज, या ऐप इंजन ऐप का उपयोग करेगा, तो आप प्रोग्रामेटिक रूप से अपने प्रोजेक्ट के लिए डिफ़ॉल्ट Google क्लाउड प्लेटफ़ॉर्म (जीसीपी) संसाधन स्थान को अंतिम रूप दे सकते हैं। ध्यान दें कि आप Firebase कंसोल में किसी स्थान का चयन भी कर सकते हैं।
इस स्थान को सेट करने से पहले, अपनी परियोजना के लिए कौन सा स्थान सर्वोत्तम है, इसकी जानकारी के लिए अपने प्रोजेक्ट के लिए स्थानों का चयन करें देखें। आपको अपने प्रोजेक्ट के लिए मान्य स्थानों की सूची वापस करने के लिए projects.availableLocations
स्थानों को भी कॉल करना चाहिए क्योंकि अगर आपका प्रोजेक्ट Google क्लाउड संगठन का हिस्सा है, तो आपकी संगठन नीतियां प्रतिबंधित कर सकती हैं कि आपके प्रोजेक्ट के लिए कौन से स्थान मान्य हैं।
इस डिफ़ॉल्ट स्थान को कॉल करना defaultLocation.finalize
विधि को कॉल करना एक ऐप इंजन एप्लिकेशन बनाता है जिसमें डिफ़ॉल्ट क्लाउड स्टोरेज बकेट locationId
में स्थित होता है जिसे आप अनुरोध निकाय में प्रदान करते हैं।
डिफ़ॉल्ट GCP संसाधन स्थान पहले से ही निर्दिष्ट किया जा सकता है यदि Project
में पहले से ही एक ऐप इंजन एप्लिकेशन है या यह 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']);
}
}
नतीजा
project.defaultLocation. projects.defaultLocation.finalize
को कॉल करने का परिणाम एक Operation
है। इससे पहले कि आप अपने प्रोजेक्ट के लिए अन्य फायरबेस-संबंधित एंडपॉइंट्स को कॉल कर सकें, ऑपरेशन सफल होना चाहिए।
यह जांचने के लिए कि क्या ऑपरेशन सफल है, आप operations.get
पर कॉल कर सकते हैं। ऑपरेशन पर प्राप्त करें जब तक कि done
गया मान true
न हो और इसकी response
google.protobuf.Empty
प्रकार की हो। यदि कार्रवाई विफल हो जाती है, तो प्रतिक्रिया बॉडी error
google.rpc.Status
प्रकार की होगी। Operation
पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।