Management REST API का इस्तेमाल करके, Firebase प्रोजेक्ट को सेट अप और मैनेज करें

Firebase मैनेजमेंट REST API की मदद से, Firebase प्रोजेक्ट को प्रोग्राम के हिसाब से सेट अप और मैनेज किया जा सकता है. इसमें प्रोजेक्ट के Firebase रिसॉर्स और Firebase ऐप्लिकेशन भी शामिल हैं.

इस खास जानकारी में, किसी ऐसे मौजूदा Google Cloud प्रोजेक्ट में Firebase के संसाधनों और ऐप्लिकेशन को जोड़ने के सामान्य वर्कफ़्लो के बारे में बताया गया है जो अब तक Firebase की सेवाओं का इस्तेमाल नहीं करता.

अगर आपको सिर्फ़ इन कामों के लिए इस पेज के खास सेक्शन पर जाना है, तो:

इस पेज पर दिया गया कोई भी तरीका अपनाने से पहले, पक्का करें कि आपने एपीआई चालू कर लिया है.

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

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

शुरू करने से पहले, आपको अपने Google Cloud प्रोजेक्ट के लिए Management API चालू करना होगा और अपना ऐक्सेस टोकन जनरेट करना होगा.

अपने Google Cloud प्रोजेक्ट के लिए, मैनेजमेंट REST API चालू करना

अगर आपने पहले से ऐसा नहीं किया है, तो आपको अपने Google Cloud प्रोजेक्ट के साथ इस्तेमाल करने के लिए, Firebase Management API को चालू करना होगा.

  1. Google API कंसोल में, Firebase मैनेजमेंट एपीआई पेज खोलें.
  2. जब कहा जाए, तब अपना Google Cloud प्रोजेक्ट चुनें.
  3. Firebase Management API पेज पर, चालू करें पर क्लिक करें.

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

यहां Node.js के लिए एक उदाहरण दिया गया है, जो आपका ऐक्सेस टोकन वापस लाता है.

सबसे पहले, अगर आप Google Cloud एनवायरमेंट में नहीं हैं, तो GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल को अपने सेवा खाते की कुंजी के पाथ पर सेट करें.

Linux या 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 पर कॉल करें. इस कॉल के लिए, अनुरोध का मुख्य हिस्सा खाली होना चाहिए.

उपलब्ध Google Cloud प्रोजेक्ट की सूची का अनुरोध करने के लिए, 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 Cloud प्रोजेक्ट हैं, जिनमें Firebase की सेवाएं जोड़ी जा सकती हैं. ध्यान दें कि project फ़ील्ड, किसी प्रोजेक्ट के लिए दुनिया भर में यूनीक संसाधन का नाम उपलब्ध कराता है.

अपने प्रोजेक्ट में Firebase की सेवाएं जोड़ने या ऐप्लिकेशन जोड़ने के लिए, availableProjects.list से मिले रिस्पॉन्स में दी गई किसी भी project वैल्यू का इस्तेमाल किया जा सकता है.

अगले सेक्शन में, हम projects/first-gcp-project संसाधन के नाम का इस्तेमाल करके, First Cloud Project में Firebase की सेवाएं जोड़ेंगे.

अपने प्रोजेक्ट में Firebase की सेवाएं जोड़ना

Google Cloud प्रोजेक्ट, Firebase की सेवाओं का फ़ायदा ले सकते हैं. इस सेक्शन में, आपको प्रोग्राम के हिसाब से अपने मौजूदा Google Cloud प्रोजेक्ट में Firebase की सेवाएं जोड़ने का तरीका पता चलेगा. ध्यान दें कि Firebase कंसोल में, अपने मौजूदा Google Cloud प्रोजेक्ट में भी Firebase की सेवाएं जोड़ी जा सकती हैं.

अनुरोध करें

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

Node.js के लिए, अपने Google Cloud प्रोजेक्ट में Firebase की सेवाएं जोड़ने का उदाहरण यहां दिया गया है:

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 से जुड़े अन्य एंडपॉइंट को कॉल करने से पहले, यह ज़रूरी है कि ऑपरेशन पूरा हो गया हो.

यह देखने के लिए कि ऑपरेशन पूरा हो गया है या नहीं, ऑपरेशन पर 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 Cloud प्रोजेक्ट में Firebase की सेवाएं हैं. जवाब में, आपके बनाए गए नए FirebaseProject के बारे में अन्य काम की जानकारी भी शामिल होती है. जैसे, उसका projectNumber और डिफ़ॉल्ट resources. Operation पूरा होने के बाद, वह अपने-आप मिट जाता है.

अपने प्रोजेक्ट में Firebase ऐप्लिकेशन जोड़ना

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

अपने Firebase प्रोजेक्ट में जोड़ने के लिए, Firebase ऐप्लिकेशन का कोई टाइप चुनें.

प्रोग्राम के ज़रिए, किसी मौजूदा Google Analytics खाते को अपने मौजूदा FirebaseProject से लिंक किया जा सकता है. ध्यान दें कि प्रोजेक्ट सेटिंग के इंटिग्रेशन टैब में जाकर, अपने मौजूदा Firebase प्रोजेक्ट को 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 में मौजूद किसी मौजूदा Firebase ऐप्लिकेशन से मिलती-जुलती है या नहीं. यह जांच, डेटा स्ट्रीम से जुड़े packageName या bundleId के आधार पर की जाती है. इसके बाद, डेटा स्ट्रीम और ऐप्लिकेशन को लिंक किया जाता है. ध्यान दें कि अपने-आप लिंक होने की सुविधा सिर्फ़ Android और iOS ऐप्लिकेशन पर लागू होती है.

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

Analytics दस्तावेज़ में, Google 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 से जुड़े अन्य एंडपॉइंट को कॉल करने से पहले, यह ज़रूरी है कि ऑपरेशन पूरा हो गया हो.

यह देखने के लिए कि ऑपरेशन पूरा हुआ है या नहीं, ऑपरेशन पर 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 पूरा होने के बाद, वह अपने-आप मिट जाता है.