प्रबंधन REST API का उपयोग करके फ़ायरबेस प्रोजेक्ट सेट अप करें और प्रबंधित करें

फायरबेस मैनेजमेंट रेस्ट एपीआई प्रोजेक्ट के फायरबेस संसाधनों और फायरबेस ऐप्स सहित फायरबेस परियोजनाओं के प्रोग्रामेटिक सेटअप और प्रबंधन को सक्षम बनाता है।

यह अवलोकन मौजूदा Google क्लाउड प्रोजेक्ट में फ़ायरबेस संसाधनों और ऐप्स को जोड़ने के लिए सामान्य वर्कफ़्लो का वर्णन करता है जो वर्तमान में फ़ायरबेस सेवाओं का उपयोग नहीं करता है।

यदि आप चाहें तो आप इस पृष्ठ के विशिष्ट अनुभागों पर जा सकते हैं:

इस पृष्ठ पर किसी भी चरण का पालन करने से पहले, सुनिश्चित करें कि आपने एपीआई सक्षम किया है

फायरबेस प्रबंधन एपीआई के लिए एक्सेस प्रबंधन के बारे में जानकारी के लिए, क्लाउड आइडेंटिटी एक्सेस मैनेजमेंट (आईएएम) एपीआई दस्तावेज़ पर जाएं।

शुरू करने से पहले

शुरू करने से पहले, आपको अपने Google क्लाउड प्रोजेक्ट के लिए प्रबंधन एपीआई को सक्षम करना होगा और अपना एक्सेस टोकन जेनरेट करना होगा

अपने Google क्लाउड प्रोजेक्ट के लिए प्रबंधन REST API सक्षम करें

यदि आपने पहले से ऐसा नहीं किया है, तो आपको अपने Google क्लाउड प्रोजेक्ट के साथ उपयोग के लिए फायरबेस प्रबंधन एपीआई को सक्षम करना होगा।

  1. Google API कंसोल में Firebase प्रबंधन API पृष्ठ खोलें।
  2. संकेत मिलने पर, अपना Google क्लाउड प्रोजेक्ट चुनें।
  3. फायरबेस प्रबंधन एपीआई पृष्ठ पर सक्षम करें पर क्लिक करें।

अपना एपीआई एक्सेस टोकन जेनरेट करें

यहां 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"

फिर, अपने सेवा खाता क्रेडेंशियल से एक्सेस टोकन प्राप्त करने के लिए फायरबेस एडमिन एसडीके का उपयोग करें:

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 क्लाउड प्रोजेक्ट पा सकते हैं जो फायरबेस सेवाओं को जोड़ने के लिए उपलब्ध हैं।

अनुरोध

availableProjects.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 पर कॉल के प्रतिक्रिया निकाय में ProjectInfo ऑब्जेक्ट्स की एक सूची होती है। यदि परियोजनाओं की सूची बहुत लंबी है, तो प्रतिक्रिया निकाय में एक nextPageToken भी होता है जिसे आप परियोजनाओं का अगला पृष्ठ प्राप्त करने के लिए क्वेरी पैरामीटर के रूप में उपयोग कर सकते हैं।

यहां availableProjects.list कॉल का एक उदाहरण प्रतिक्रिया निकाय है:

{
  "projectInfo": [
    {
      "project": "projects/first-cloud-project",
      "displayName": "First Cloud Project"
    },
    {
      "project": "projects/second-cloud-project",
      "displayName": "Second Cloud Project"
    }
  ]
}

इस उदाहरण प्रतिक्रिया में दो Google क्लाउड प्रोजेक्ट हैं जिनमें फ़ायरबेस सेवाएँ जोड़ी जा सकती हैं। ध्यान दें कि project फ़ील्ड किसी प्रोजेक्ट के लिए विश्व स्तर पर अद्वितीय संसाधन नाम प्रदान करता है।

आप Firebase सेवाओं को जोड़ने या अपने प्रोजेक्ट में ऐप्स जोड़ने के लिए availableProjects.list से प्रतिक्रिया में सूचीबद्ध किसी भी project मान का उपयोग कर सकते हैं।

अगले भाग में, हम projects/first-gcp-project संसाधन नाम का उपयोग करके First Cloud Project में फायरबेस सेवाएं जोड़ेंगे।

अपने प्रोजेक्ट में फायरबेस सेवाएँ जोड़ें

Google क्लाउड प्रोजेक्ट फायरबेस द्वारा दी जाने वाली सेवाओं का लाभ उठा सकते हैं। इस अनुभाग में, आप सीखेंगे कि अपने मौजूदा Google क्लाउड प्रोजेक्ट में प्रोग्रामेटिक रूप से फायरबेस सेवाओं को कैसे जोड़ें। ध्यान दें कि आप फायरबेस कंसोल में अपने मौजूदा Google क्लाउड प्रोजेक्ट में फायरबेस सेवाएं भी जोड़ सकते हैं।

अनुरोध

projects.addFirebase पर कॉल करें। इस कॉल के लिए अनुरोध निकाय खाली होना चाहिए.

आपके Google क्लाउड प्रोजेक्ट में फ़ायरबेस सेवाओं को जोड़ने के लिए 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 क्लाउड प्रोजेक्ट में अब फायरबेस सेवाएं हैं। प्रतिक्रिया में आपके नव निर्मित FirebaseProject के बारे में अन्य उपयोगी जानकारी भी शामिल है, जैसे इसका projectNumber और इसके डिफ़ॉल्ट resourcesOperation पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।

अपने प्रोजेक्ट में फायरबेस ऐप्स जोड़ें

कई अलग-अलग ऐप्स FirebaseProject का उपयोग कर सकते हैं, जिनमें iOS, Android और वेब ऐप्स शामिल हैं। इस अनुभाग में, आप सीखेंगे कि अपने मौजूदा FirebaseProject में प्रोग्रामेटिक रूप से फायरबेस ऐप्स कैसे जोड़ें। ध्यान दें कि आप फायरबेस कंसोल में अपने मौजूदा फायरबेस प्रोजेक्ट में फायरबेस ऐप्स भी जोड़ सकते हैं।

अपने फायरबेस प्रोजेक्ट में जोड़ने के लिए एक प्रकार का फायरबेस ऐप चुनें।

आप अपने मौजूदा फायरबेस प्रोजेक्ट में एक फायरबेस एंड्रॉइड ऐप जोड़ सकते हैं।

अनुरोध

projects.androidApps.create पर कॉल करें। अपना अनुरोध निकाय कैसे बनाएं यहां बताया गया है:

  • आवश्यक:

    • packageName : एंड्रॉइड ऐप का कैनोनिकल पैकेज नाम जैसा कि यह Google Play डेवलपर कंसोल में दिखाई देगा।
  • वैकल्पिक, लेकिन अनुशंसित:

    • displayName : ऐप का उपयोगकर्ता द्वारा निर्दिष्ट डिस्प्ले नाम। यह मान बाद में आपके ऐप को फायरबेस कंसोल में ढूंढने के लिए उपयोगी है।

हमारे उदाहरण के लिए अनुरोध निकाय में, हम packageName और displayName उपयोग करेंगे:

{
  "displayName": "My Firebase Android App"
  "packageName": "com.firebase.android"
}

आपके फायरबेस प्रोजेक्ट में फायरबेस एंड्रॉइड ऐप जोड़ने के लिए Node.js के लिए यहां एक उदाहरण दिया गया है:

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 है। प्रतिक्रिया में आपके नव निर्मित फायरबेस एंड्रॉइड ऐप के बारे में अन्य उपयोगी जानकारी भी शामिल है, जैसे अद्वितीय फायरबेस appIdOperation पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।

SHA प्रमाणपत्र जोड़ें

आप projects.androidApps.sha.create पर कॉल करके किसी भी मौजूदा फायरबेस एंड्रॉइड ऐप में SHA प्रमाणपत्र जोड़ सकते हैं। इस विधि कॉल के लिए अनुरोध निकाय में एक खाली name फ़ील्ड होना चाहिए। इस कॉल का परिणाम ShaCertificate का एक नव निर्मित उदाहरण है।

projects.androidApps.sha.create पर कॉल करते समय, आपको एक वैध SHA-1 या SHA-256 प्रमाणपत्र हैश प्रदान करना होगा। आप ग्रेडल signingReport कमांड के साथ अपने हस्ताक्षर प्रमाणपत्र का SHA हैश प्राप्त कर सकते हैं:

./gradlew signingReport

अधिक जानकारी के लिए, Android के लिए Google API पर जाएं।

आप किसी मौजूदा Google Analytics खाते को अपने मौजूदा FirebaseProject से प्रोग्रामेटिक रूप से लिंक कर सकते हैं। ध्यान दें कि आप अपने प्रोजेक्ट सेटिंग्स के एकीकरण टैब में अपने मौजूदा फायरबेस प्रोजेक्ट को Google Analytics से भी लिंक कर सकते हैं।

projects.addGoogleAnalytics पर कॉल के लिए analytics_resource आवश्यकता होती है, जो या तो analyticsAccountId या analyticsPropertyId हो सकता है:

  • निर्दिष्ट खाते के भीतर एक नई Google Analytics प्रॉपर्टी का प्रावधान करने और नई प्रॉपर्टी को अपने फायरबेस प्रोजेक्ट के साथ संबद्ध करने के लिए एक मौजूदा analyticsAccountId निर्दिष्ट करें।

  • Google Analytics प्रॉपर्टी को अपने Firebase प्रोजेक्ट के साथ संबद्ध करने के लिए एक मौजूदा analyticsPropertyId निर्दिष्ट करें।

आप Google Analytics वेबसाइट पर अपना analyticsAccountId और कोई भी मौजूदा analyticsPropertyId दोनों पा सकते हैं।

जब आप projects.addGoogleAnalytics कॉल करते हैं:

  1. पहली जांच यह निर्धारित करती है कि क्या Google Analytics प्रॉपर्टी में कोई मौजूदा डेटा स्ट्रीम आपके FirebaseProject में किसी मौजूदा फायरबेस ऐप्स से मेल खाती है (डेटा स्ट्रीम से जुड़े packageName या bundleId के आधार पर)। फिर, जैसा लागू हो, डेटा स्ट्रीम और ऐप्स लिंक हो जाते हैं। ध्यान दें कि यह ऑटो-लिंकिंग केवल Android ऐप्स और iOS ऐप्स पर लागू होती है।

  2. यदि आपके फायरबेस ऐप्स के लिए कोई संबंधित डेटा स्ट्रीम नहीं मिलती है, तो आपके प्रत्येक फायरबेस ऐप्स के लिए Google Analytics प्रॉपर्टी में नई डेटा स्ट्रीम का प्रावधान किया जाता है। ध्यान दें कि एक वेब ऐप के लिए हमेशा एक नई डेटा स्ट्रीम का प्रावधान किया जाता है, भले ही वह पहले आपकी एनालिटिक्स प्रॉपर्टी में डेटा स्ट्रीम से जुड़ा हो।

Analytics दस्तावेज़ में Google Analytics खातों के पदानुक्रम और संरचना के बारे में अधिक जानें।

अनुरोध

projects.addGoogleAnalytics कॉल करें।

project.addGoogleAnalytics पर हमारे उदाहरण कॉल के अनुरोध निकाय में, हम अपना Google Analytics खाता analyticsAccountId निर्दिष्ट करेंगे। यह कॉल एक नई Google Analytics प्रॉपर्टी का प्रावधान करेगी और नई प्रॉपर्टी को FirebaseProject के साथ संबद्ध करेगी।

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

यहां Node.js के लिए फ़ायरबेस प्रोजेक्ट को 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 क्लाउड प्लेटफ़ॉर्म (जीसीपी) संसाधन स्थान को अंतिम रूप दे सकते हैं। ध्यान दें कि आप फायरबेस कंसोल में एक स्थान भी चुन सकते हैं।

इस स्थान को सेट करने से पहले, यह जानने के लिए कि आपके प्रोजेक्ट के लिए कौन सा स्थान सर्वोत्तम है, अपने प्रोजेक्ट के लिए स्थानों का चयन करें देखें। आपको अपने प्रोजेक्ट के लिए मान्य स्थानों की सूची लौटाने के लिए projects.availableLocations को भी कॉल करना चाहिए क्योंकि यदि आपका प्रोजेक्ट Google क्लाउड संगठन का हिस्सा है, तो आपकी संगठन नीतियां प्रतिबंधित कर सकती हैं कि कौन से स्थान आपके प्रोजेक्ट के लिए मान्य हैं।

इस defaultLocation.finalize विधि को कॉल करने से आपके द्वारा अनुरोध निकाय में प्रदान किए गए locationId में स्थित एक डिफ़ॉल्ट क्लाउड स्टोरेज बकेट के साथ एक ऐप इंजन एप्लिकेशन बन जाता है।

यदि Project पहले से ही एक ऐप इंजन एप्लिकेशन है या यह defaultLocation.finalize विधि पहले से कॉल की गई थी, तो डिफ़ॉल्ट GCP संसाधन स्थान पहले ही निर्दिष्ट किया जा सकता है।

अनुरोध

projects.defaultLocation.finalize पर कॉल करें। अपना अनुरोध निकाय कैसे बनाएं यहां बताया गया है:

  • आवश्यक:

    • locationId : वह स्थान जहां आपका डेटा GCP सेवाओं के लिए संग्रहीत किया जाता है, जिनके लिए क्लाउड फायरस्टोर या क्लाउड स्टोरेज जैसी स्थान सेटिंग की आवश्यकता होती है।
{
  "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 है। इससे पहले कि आप अपने प्रोजेक्ट के लिए अन्य फायरबेस-संबंधित एंडपॉइंट्स को कॉल कर सकें, ऑपरेशन सफल होना चाहिए।

यह जांचने के लिए कि ऑपरेशन सफल है या नहीं, आप ऑपरेशन पर operations.get तब तक कॉल कर सकते हैं जब तक कि done मान true न हो और इसकी response google.protobuf.Empty प्रकार की न हो। यदि ऑपरेशन असफल होता है, तो प्रतिक्रिया निकाय error google.rpc.Status प्रकार की होगी। Operation पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।