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

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

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

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

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

Firebase प्रबंधन API के लिए एक्सेस प्रबंधन के बारे में जानकारी के लिए, Cloud Identity Access Management (IAM) API दस्तावेज़ देखें

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

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

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

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

  1. Google API कंसोल में Firebase प्रबंधन API पृष्ठ खोलें।
  2. संकेत मिलने पर, अपना Google क्लाउड प्रोजेक्ट चुनें।
  3. 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 और इसके डिफ़ॉल्ट resourcesOperation पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।

अपने प्रोजेक्ट में 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 appIdOperation पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।

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 पर जाएं।

आप किसी मौजूदा 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 को कॉल करते हैं:

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

  2. यदि आपके 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 पूरा होने के बाद स्वचालित रूप से हटा दिया जाता है।