Maps JavaScript API पासकोड को सुरक्षित रखने के लिए, App Check का इस्तेमाल करना

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

काम कर रहे ऐप्लिकेशन को दिखाने वाला पेज

आपको क्या बनाना है.

इस कोडलैब में, वेब एनवायरमेंट में इस्तेमाल किए गए एपीआई पासकोड में सुरक्षा की एक और लेयर जोड़ने के लिए, App Check का इस्तेमाल किया जाएगा.

खास तौर पर, इस सुविधा को एक साथ जोड़ने के लिए, Codelab में यह तरीका अपनाया जाएगा:

  • Google Maps Platform JavaScript API का इस्तेमाल करके, मैप को होस्ट करने के लिए एक वेब पेज बनाएं.
  • पेज को होस्ट करें, ताकि इसे ऑनलाइन ऐक्सेस किया जा सके.
  • Cloud Console का इस्तेमाल करके, उन डोमेन और एपीआई पर पाबंदी लगाएं जो एपीआई का इस्तेमाल कर सकते हैं.
  • Firebase के ज़रिए, App Check लाइब्रेरी को जोड़ें और शुरू करें.
  • आवेदन की वैधता की जांच करने के लिए, पुष्टि करने वाली कंपनी को जोड़ें.
  • अपने ऐप्लिकेशन पर जांच करने की सुविधा लागू करें और उस पर नज़र रखें.

कोड लैब के आखिर में, आपके पास एक ऐसी साइट होनी चाहिए जो इस्तेमाल की जा रही दोनों एपीआई कुंजियों, उन डोमेन जिनसे इन्हें ऐक्सेस किया जाता है, और उन ऐप्लिकेशन के टाइप पर सुरक्षा लागू करती हो जो इनका इस्तेमाल कर सकते हैं.

2. ज़रूरी शर्तें

App Check को चालू करने के लिए, सुरक्षा से जुड़ी तीन Google सेवाओं का इस्तेमाल करना ज़रूरी है. आपको इन सेवाओं के बारे में जानकारी होनी चाहिए.

Firebase - यह उन सेवाओं को लागू करता है जो यह जांच करती हैं कि एपीआई पासकोड, सही डोमेन से रेफ़र किए जा रहे हैं. इससे Firebase Studio का इस्तेमाल करके, होस्टिंग और डिप्लॉयमेंट की सुविधा भी मिलेगी.

reCAPTCHA - इससे यह पता चलता है कि ऐप्लिकेशन का इस्तेमाल इंसान कर रहे हैं या नहीं. साथ ही, यह Firebase को क्लाइंट ऐप्लिकेशन डोमेन से कनेक्ट करने के लिए, सार्वजनिक और निजी कुंजियां उपलब्ध कराता है.

Google Cloud Platform - यह Google Maps Platform और Firebase, दोनों के लिए इस्तेमाल किए जाने वाले एपीआई पासकोड उपलब्ध कराता है. साथ ही, Maps पासकोड का इस्तेमाल करने वाले डोमेन पर पाबंदी लगाता है.

आर्किटेक्चर के इस डायग्राम में दिखाया गया है कि ये सभी फ़ंक्शन एक साथ कैसे काम करते हैं:

सिस्टम के आर्किटेक्चर की खास जानकारी

App Check और Google Maps Platform का इस्तेमाल करते समय, ये एलिमेंट एक साथ काम करते हैं. इनसे यह पता चलता है कि अनुरोध किसी मान्य ऐप्लिकेशन और उपयोगकर्ता से आ रहे हैं या नहीं. इसके लिए, पुष्टि करने वाली कंपनी से मिले एटेस्टेशन का इस्तेमाल किया जाता है. इस मामले में, पुष्टि करने वाली कंपनी reCAPTCHA है.

यह प्रोसेस, Firebase की ओर से उपलब्ध कराए गए App Check SDK टूल का इस्तेमाल करके की जाती है. यह टूल, कॉल करने वाले ऐप्लिकेशन की वैधता की जांच करता है. इसके बाद, ऐप्लिकेशन को एक टोकन उपलब्ध कराता है. इस टोकन की मदद से, Google Maps Platform JavaScript API को बाद में कॉल किए जाते हैं. इसके बाद, Google Maps Platform Javascript API, Firebase के साथ दिए गए टोकन की वैधता की जांच करता है. इससे यह पक्का किया जाता है कि टोकन सही डोमेन से आ रहा है. साथ ही, यह भी पक्का किया जाता है कि पुष्टि करने वाली कंपनी से, मान्य उपयोगकर्ता के ज़रिए टोकन भेजा गया है.

App Check और Maps JavaScript API को इस्तेमाल करने के बारे में ज़्यादा जानकारी यहां दी गई है. आपको ज़रूरी चरणों के बारे में भी पता होना चाहिए.

https://developers.google.com/maps/documentation/javascript/maps-app-check

3. सेट अप करें

अगर आपके पास Google Cloud खाता नहीं है, तो आपको बिलिंग की सुविधा चालू करके एक खाता सेट अप करना होगा. शुरू करने से पहले, इसे बनाने के लिए निर्देशों का पालन करें.

Google Maps Platform सेट अप करना

अगर आपके पास Google Cloud Platform खाता और बिलिंग की सुविधा वाला प्रोजेक्ट नहीं है, तो बिलिंग की सुविधा वाला खाता और प्रोजेक्ट बनाएं. ऐसा करने का तरीका जानने के लिए, कृपया Google Maps Platform का इस्तेमाल शुरू करना देखें.

  1. Cloud Console में, प्रोजेक्ट वाले ड्रॉप-डाउन मेन्यू पर क्लिक करें. इसके बाद, उस प्रोजेक्ट को चुनें जिसे इस कोडलैब के लिए इस्तेमाल करना है.

  1. इस कोडलैब के लिए ज़रूरी Google Maps Platform API और एसडीके को Google Cloud Marketplace में जाकर चालू करें. ऐसा करने के लिए, इस वीडियो या दस्तावेज़ में बताया गया तरीका अपनाएं.
  2. Cloud Console के क्रेडेंशियल पेज पर जाकर, एक एपीआई पासकोड जनरेट करें. ऐसा करने के लिए, इस वीडियो या दस्तावेज़ में बताया गया तरीका अपनाएं. Google Maps Platform का इस्तेमाल करने के लिए, एपीआई पासकोड ज़रूरी है.

इस कोडलैब के लिए अन्य ज़रूरी शर्तें

इस कोडलैब को पूरा करने के लिए, आपको इन खातों, सेवाओं, और टूल की ज़रूरत होगी:

  • JavaScript, एचटीएमएल, और सीएसएस की बुनियादी जानकारी
  • बिलिंग की सुविधा वाला Google Cloud खाता (जैसा कि बताया गया है)
  • Maps JavaScript API की सुविधा वाला Google Maps Platform API पासकोड (यह कोडलैब के दौरान किया जाएगा).
  • वेब होस्टिंग और डिप्लॉयमेंट के बारे में बुनियादी जानकारी (कोडलैब में आपको इसके बारे में बताया जाएगा). यह काम Firebase कंसोल और Firebase Studio के ज़रिए किया जाएगा.
  • काम करते समय फ़ाइलें देखने के लिए, वेब ब्राउज़र.

4. Firebase Studio में पेज बनाना

इस कोडलैब में यह नहीं माना गया है कि आपने पहले से ही कोई ऐप्लिकेशन बनाया है. इसमें Firebase Studio का इस्तेमाल करके, मैप ऐप्लिकेशन को होस्ट करने के लिए एक पेज बनाया जाता है. साथ ही, इसे जांच के लिए Firebase पर डिप्लॉय किया जाता है. अगर आपके पास पहले से कोई ऐप्लिकेशन है, तो उसका भी इस्तेमाल किया जा सकता है. हालांकि, आपको सही तरीके से लागू करने के लिए, होस्ट डोमेन, कोड स्निपेट, और एपीआई कुंजियों में बदलाव करना होगा.

Firebase Studio पर जाएं. इसके लिए, Google खाता होना ज़रूरी है. इसके बाद, एक नया Simple HTML ऐप्लिकेशन बनाएं. इस विकल्प को देखने के लिए, आपको "सभी टेंप्लेट देखें" बटन पर क्लिक करना पड़ सकता है. इसके अलावा, सीधे तौर पर ऐक्सेस करने के लिए, इस लिंक पर क्लिक करें.

इमेज में सिंपल एचटीएमएल टेंप्लेट दिखाया गया है

वर्कस्पेस को कोई सही नाम दें, जैसे कि myappcheck-map. साथ ही, इसे यूनीक बनाने के लिए कोई रैंडम नंबर जोड़ें. यह आपके लिए एक नंबर जोड़ देगा. इसके बाद, Firebase Studio फ़ाइल फ़ोल्डर बना देगा.

Workspace के नए विकल्प दिखाने वाली इमेज

नाम डालने के बाद, 'बनाएं' बटन पर क्लिक करें. इससे प्रोजेक्ट बनाने की प्रोसेस शुरू हो जाएगी.

प्रोजेक्ट बनाने का डायलॉग बॉक्स दिखाने वाली इमेज

इसे बनाने के बाद, index.html फ़ाइल में मौजूद टेक्स्ट को इस कोड से बदला जा सकता है. इससे एक ऐसा पेज बनता है जिसमें मैप होता है.

<!doctype html>
<html>

<head>
 <title>Secure Map</title>
 <style>
   #map {
     height: 100%;
   }

   html,
   body {
     height: 100%;
     margin: 0;
     padding: 0;
     font-family: Arial, Helvetica, sans-serif;
   }
 </style>
</head>

<body>
 <h3>App Check Security Demo</h3>
 <!--The div element for the map -->
 <div id="map"></div>
 <script>
   (g => { var h, a, k, p = "The Google Maps JavaScript API", c = "google", l = "importLibrary", q = "__ib__", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement("script")); e.set("libraries", [...r] + ""); for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); e.set("callback", c + ".maps." + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + " could not load.")); a.nonce = m.querySelector("script[nonce]")?.nonce || ""; m.head.append(a) })); d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({
     key: "YOUR_API_KEY",
     v: "weekly",
     // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
     // Add other bootstrap parameters as needed, using camel case.
   });
 </script>
 <script>
   let map;
   async function initMap() {
     const { Map } = await google.maps.importLibrary("maps");
     map = new Map(document.getElementById("map"), {
       center: { lat: 51.5208, lng: -0.0977 },
       zoom: 17,
     });
   }
   initMap();
 </script>
</body>

</html>

इस निर्देश को चलाने पर, चाहिए कि यह इमेज में दिखाए गए ऐप्लिकेशन का मैप दिखाने वाला पेज दिखाए, लेकिन!

इस इमेज में, काम कर रहे ऐप्लिकेशन को दिखाया गया है.

हालांकि, पेज लोड होने पर एक गड़बड़ी दिखेगी, क्योंकि पेज में Google Maps Platform API पासकोड की ज़रूरत होगी. इसे अगले सेक्शन में जोड़ा जाएगा.

&#39;कोई गड़बड़ी हुई&#39; सूचना दिखाने वाली इमेज.

गड़बड़ी का असल मैसेज, Firebase Studio में वेब कंसोल में देखा जा सकता है.

कुंजी अमान्य होने पर दिखने वाला गड़बड़ी का मैसेज.

इस समस्या को ठीक करने के लिए, हमें पेज में एक एपीआई पासकोड जोड़ना होगा. एपीआई पासकोड की मदद से, पेज और Maps JavaScript API को एक साथ जोड़ा जाता है. इसका गलत इस्तेमाल भी किया जा सकता है, क्योंकि इसे पेज में बिना एन्क्रिप्ट (सुरक्षित) किए हुए शामिल करना होता है. ऐसे में, एपीआई कुंजी को चुराकर अलग-अलग साइटों पर इस्तेमाल किया जा सकता है.

सुरक्षा का एक तरीका, ऐप्लिकेशन पर पाबंदियां लगाना है. ऐसा, इस्तेमाल किए जा रहे ऐप्लिकेशन के टाइप या कॉल किए जा रहे रेफ़रिंग डोमेन या आईपी पते के ज़रिए किया जा सकता है. सबसे सही तरीकों के बारे में ज़्यादा जानने के लिए, इस साइट पर जाएं:

https://developers.google.com/maps/api-security-best-practices#rec-best-practices

या कमांड लाइन या सर्वर से सीधे कॉल का इस्तेमाल करके, ऐसे ऐप्लिकेशन जो रेफ़रर की जानकारी नहीं दे सकते या ट्रैक नहीं किए जा सकते. इसलिए, ये सुरक्षा के लिहाज़ से जोखिम भरे हो सकते हैं.

5. Firebase ऐप्लिकेशन बनाना

Firebase का इस्तेमाल, पुष्टि करने वाली कंपनी को यह सुविधा देने के लिए किया जाता है कि वह इन चीज़ों की जांच कर सके:

  • अनुरोध आपके असली ऐप्लिकेशन से किए गए हों
  • अनुरोध, किसी भरोसेमंद डिवाइस और उपयोगकर्ता के सेशन से किए गए हों.

इस कोडलैब में, reCAPTCHA v3 का इस्तेमाल इस पुष्टि को देने वाले के तौर पर किया जाएगा.

Firebase ऐप्लिकेशन बनाएं और उसे होस्ट करें.

https://firebase.google.com/ पर जाएं और "कंसोल पर जाएं" लिंक से नया Firebase प्रोजेक्ट बनाएं.

कंसोल लिंक दिखाने वाली इमेज

नीचे दी गई जगह पर क्लिक करके, नया प्रोजेक्ट बनाएं.

नया Firebase प्रोजेक्ट बनाएं.

प्रोजेक्ट के लिए कोई नाम चुनें. जैसे, My App Check Project. यह ज़रूरी नहीं है कि यह नाम वही हो जो पहले इस्तेमाल किया गया था, क्योंकि यह सिर्फ़ रेफ़रंस के लिए है. प्रोजेक्ट के असली नाम को टेक्स्ट के ठीक नीचे जाकर बदला जा सकता है. यह नाम, आपके डाले गए नाम से बना होगा. अगर यह नाम यूनीक नहीं होगा, तो इसमें कोई नंबर जोड़ दिया जाएगा.

प्रोजेक्ट का नाम डालने की जानकारी दिखाने वाली इमेज.

अगर आपको अपने ऐप्लिकेशन में Google Analytics जैसी अन्य सेवाएं जोड़ने के लिए कहा जाता है, तो आपके पास उन्हें स्वीकार करने या न करने का विकल्प होता है. हालांकि, इस कोडलैब के लिए इनकी ज़रूरत नहीं है. इसलिए, इन्हें छोड़ा जा सकता है.

"प्रोजेक्ट बनाएं" बटन पर क्लिक करें और प्रोजेक्ट बनने का इंतज़ार करें. यह प्रोसेस पूरी होने पर, आपको इसकी सूचना दी जाएगी.

प्रोजेक्ट बनाने के डायलॉग बॉक्स को दिखाने वाली इमेज.

जब प्रोजेक्ट के साथ इंटरैक्ट करने की सुविधा चालू हो जाए, तब जारी रखें पर क्लिक करें.

प्रोजेक्ट पूरा होने की सूचना देने वाले डायलॉग बॉक्स को दिखाने वाली इमेज.

इसके बाद, मुख्य पेज पर जाकर, अपने ऐप्लिकेशन में Firebase जोड़ें और वेब का विकल्प चुनें.

&#39;इन्हें जोड़ना शुरू करें&#39; सेक्शन.

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

नए ऐप्लिकेशन को रजिस्टर करें.

ऐप्लिकेशन बनाने के लिए, ऐप्लिकेशन रजिस्टर करें पर क्लिक करें. इसके बाद, बनाई गई स्क्रिप्ट को लें और उसका इस्तेमाल करके, हमारे वेब ऐप्लिकेशन से Firebase में मौजूद प्रोजेक्ट को रेफ़रंस करें.

अगले टैब में मौजूद Firebase कॉन्फ़िगरेशन कोड का इस्तेमाल ऐप्लिकेशन में, Firebase और Maps API को एक साथ कनेक्ट करने के लिए किया जाएगा. इसलिए, इसे "स्क्रिप्ट टैग का इस्तेमाल करें" सेक्शन से कॉपी करना चाहिए. इसे प्रोजेक्ट के index.html में चिपकाएं.

पेज पर शामिल करने के लिए स्क्रिप्ट टैग.

अन्य सेक्शन के लिए, 'आगे बढ़ें' पर क्लिक करें. इसके बाद, साइट के प्रोजेक्ट सेटिंग सेक्शन में जाकर, बनाया गया ऐप्लिकेशन देखें.

अगर आपको बाद में कॉन्फ़िगरेशन की जानकारी देखनी है, तो "सेटिंग" बटन पर जाकर भी ऐप्लिकेशन की जानकारी देखी जा सकती है. जैसा कि यहां दिखाया गया है:

प्रोजेक्ट सेटिंग मेन्यू आइटम.

इस सेक्शन से बाहर निकलने से पहले, आपको बनाई गई Firebase होस्टिंग साइट का डोमेन नोट करना होगा. इसे बाद में reCAPTCHA के साथ इस्तेमाल किया जाएगा. इससे साइट के नाम को पुष्टि करने वाली कंपनी से जोड़ा जा सकता है. इसका मतलब है कि सिर्फ़ उस साइट से मिले अनुरोधों की पुष्टि की जाएगी.

बाईं ओर मौजूद प्रोजेक्ट के शॉर्टकट या 'बनाएं' मेन्यू में जाकर, होस्टिंग सेक्शन पर जाएं

होस्टिंग का शॉर्टकट दिखाने वाली इमेज. या होस्टिंग बिल्ड मेन्यू दिखाने वाली इमेज.

इसके बाद, उस डोमेन को ढूंढें जिसे ऐप्लिकेशन के लिए बनाया गया है. अगर आपने इसे पहले से सेट अप नहीं किया है, तो इसे सेट अप करने के लिए आपको कुछ स्क्रीन पर क्लिक करना पड़ सकता है.

इमेज में होस्टिंग डोमेन का डायलॉग दिख रहा है.

6. एपीआई कुंजियों को सुरक्षित करना

उस प्रोजेक्ट को देखने के लिए, Cloud Console में उसी खाते से लॉग इन करें जिसका इस्तेमाल Firebase के लिए किया जा रहा है,

लिंक

Cloud Console का लिंक दिखाने वाली इमेज

अगर आपके पास एक से ज़्यादा प्रोजेक्ट हैं, तो आपको सही प्रोजेक्ट चुनने के लिए ड्रॉप-डाउन या खोज बॉक्स का इस्तेमाल करना पड़ सकता है. इसमें आपके Firebase प्रोजेक्ट का नाम शामिल होगा.

&#39;प्रोजेक्ट की सूची चुनें&#39; विकल्प दिखाने वाली इमेज

इससे नया प्रोजेक्ट खुल जाएगा. अब इस प्रोजेक्ट में Maps JavaScript API जोड़ें, ताकि इसका इस्तेमाल प्रोजेक्ट में किया जा सके. साथ ही, इसके इस्तेमाल को किसी खास एपीआई कुंजी और होस्टिंग डोमेन तक सीमित किया जा सके.

प्रोजेक्ट का स्वागत पेज दिखाने वाली इमेज.

प्रोजेक्ट में Maps API चालू करने के लिए, बाईं ओर मौजूद मेन्यू का इस्तेमाल करें. "एपीआई और सेवाएं" विकल्प और "चालू किए गए एपीआई और सेवाएं" को चुनें.

इमेज में, &#39;एपीआई चालू करें&#39; मेन्यू का इस्तेमाल करते हुए दिखाया गया है.

"एपीआई और सेवाएं चालू करें" विकल्प चुनें

इमेज में, &#39;एपीआई चालू करें&#39; मेन्यू को चुना हुआ दिखाया गया है.

खोज बॉक्स में "Maps JavaScript API" डालें.

एपीआई सर्च बॉक्स दिखाने वाली इमेज

मेल खाने वाला नतीजा चुनें.

मिलते-जुलते एपीआई चुनें बॉक्स दिखाने वाली इमेज

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

मैच किए गए एपीआई को चालू करने का बॉक्स दिखाने वाली इमेज

इसे चालू करने के बाद, एपीआई कुंजी जोड़ने और उस पर पाबंदी लगाने का विकल्प चुना जा सकता है. हालांकि, फ़िलहाल इसे स्किप किया जाएगा.

बाईं ओर मौजूद मेन्यू के विकल्पों का फिर से इस्तेमाल करके, एपीआई और सेवाएं सेक्शन पर वापस जाएं. इसके बाद, आपके लिए बनाई गई ब्राउज़र कुंजी चुनें.

एपीआई को प्रतिबंधित करने की सुविधा दिखाने वाली इमेज.

Maps JavaScript API को, एपीआई के इस्तेमाल पर लगी पाबंदियों में से किसी एक में जोड़ें.

फ़िल्टर करने के लिए, Maps API चुनें.

लाइव ऐप्लिकेशन में मौजूद कुंजियों के लिए, आपको ऐप्लिकेशन को होस्ट करने वाले डोमेन पर भी पाबंदी लगानी होगी. इसके लिए, Firebase में आपके लिए बनाए गए डोमेन का इस्तेमाल करें. आपको डोमेन के आखिर में /* भी जोड़ना चाहिए, ताकि यह पक्का किया जा सके कि इसके तहत आने वाले सभी पाथ शामिल हैं.

वह डोमेन जिस पर पाबंदी लगानी है.

एपीआई कुंजियों को सीमित करने के बारे में ज़्यादा जानकारी के लिए, इस सुविधा को चालू करने के बारे में यहां ज़्यादा जानकारी पाएं.

https://developers.google.com/maps/api-security-best-practices#restricting-api-keys

7. reCAPTCHA सीक्रेट बनाना

अगला चरण, reCAPTCHA प्रोजेक्ट बनाना है, ताकि क्लाइंट और सर्वर, दोनों के लिए पुष्टि और कुंजियां दी जा सकें.

https://www.google.com/recaptcha/ पर जाकर reCAPTCHA की साइट पर जाएं. इसके बाद, 'शुरू करें' बटन पर क्लिक करें.

reCAPTCHA का इस्तेमाल शुरू करें विकल्प को दिखाने वाली इमेज.

इसके बाद, नई साइट रजिस्टर करें. पक्का करें कि आपने पाबंदी लगाने के लिए सही डोमेन डाला हो.

reCAPTCHA साइट को रजिस्टर करने की प्रोसेस दिखाने वाली इमेज.

यह भी पक्का करें कि आपने उसी Google Cloud प्रोजेक्ट को चुना हो जिसे Firebase ने बनाया है. ऐसा तब करें, जब आपके पास एक से ज़्यादा Google Cloud प्रोजेक्ट हों.

इससे दो कुंजियां बनती हैं. एक सीक्रेट कुंजी, जिसे आपको Firebase कंसोल में डालना होगा. इसे कभी भी ऐसे पेज या ऐप्लिकेशन में नहीं डालना चाहिए जिसे सार्वजनिक तौर पर देखा जा सकता हो. दूसरी साइट कुंजी, जिसका इस्तेमाल वेब ऐप्लिकेशन में किया जाएगा.

reCAPTCHA कुंजी वाला पेज दिखाने वाली इमेज.

इस पेज को खुला रखें, क्योंकि आपको इसकी ज़रूरत पड़ेगी. 'सीक्रेट कुंजी कॉपी करें' बटन पर क्लिक करें. इसके बाद, Firebase की साइट पर वापस जाएं.

8. Firebase में reCAPTCHA जोड़ना

Firebase Admin console में, बाईं ओर मौजूद मेन्यू आइटम पर जाएं. बनाएं मेन्यू आइटम में जाकर, App Check चुनें.

इमेज में, होस्टिंग बिल्ड मेन्यू दिखाया गया है.

जब तक कोई ऐप्लिकेशन रजिस्टर नहीं हो जाता, तब तक सेवाओं की सूची चालू नहीं की जा सकती. यह सूची, साइट में होस्टिंग की सुविधा जोड़ने के दौरान बनाई गई थी. अगर आपको इसे सेट अप करना है, तो शुरू करें पर क्लिक करें.

ऐप्लिकेशन टैब पर क्लिक करें और वेब ऐप्लिकेशन खोलें. इसके बाद, reCAPTCHA साइट से कॉपी किया गया सीक्रेट डालें और 'सेव करें' पर क्लिक करें.

इस इमेज में, सीक्रेट डालते हुए दिखाया गया है

अब reCAPTCHA सेवा देने वाली कंपनी के नाम के बगल में, हरे रंग का सही का निशान दिखना चाहिए. यह वेब ऐप्लिकेशन अब reCAPTCHA का इस्तेमाल करके यह पुष्टि कर सकता है कि कोई उपयोगकर्ता या साइट, सेवा को सही तरीके से कॉल कर रही है या नहीं.

हरे रंग का सही का निशान, reCAPTCHA चालू होने की जानकारी दिखाता है

एपीआई टैब पर अब यह दिखना चाहिए कि Google Maps Platform API चालू है, लेकिन अब लागू नहीं है.

App Check चालू है, लेकिन लागू नहीं किया गया है.

आपने अब reCAPTCHA सीक्रेट को Firebase प्रोजेक्ट से लिंक कर दिया है. अब वेब पेज में कोड जोड़ें, ताकि साइट की कुंजी को Maps ऐप्लिकेशन के साथ इस्तेमाल करने के लिए सही प्रोवाइडर से मैच किया जा सके.

reCAPTCHA, साइट के पासकोड की जांच करके यह पता लगाता है कि वह सीक्रेट पासकोड से मैच करता है या नहीं. ऐसा होने पर, यह पुष्टि हो जाती है कि कॉल करने वाला पेज सही है. साथ ही, App Check एक ऐसा टोकन उपलब्ध कराता है जिसका इस्तेमाल Maps JavaScript API को किए जाने वाले बाद के कॉल के लिए किया जा सकता है. इस पुष्टि के बिना टोकन नहीं दिया जाएगा और अनुरोधों की पुष्टि नहीं की जा सकेगी.

9. पेज पर पुष्टि करने की सुविधा जोड़ें और उसे डिप्लॉय करें.

क्लाउड कंसोल पर वापस जाएं और Maps API के लिए इस्तेमाल की जाने वाली एपीआई पासकोड को कॉपी करें.

आपको यह विकल्प, कंसोल के साइड मेन्यू में जाकर मिलेगा. इसके लिए, एपीआई और सेवाएँ साइड मेन्यू में जाकर, क्रेडेंशियल विकल्प पर क्लिक करें.

क्रेडेंशियल मेन्यू दिखाने वाली इमेज.

यहां से, मौजूदा ब्राउज़र कुंजी चुनी जा सकती है. हालांकि, जैसा कि बताया गया है, किसी दूसरी मौजूदा कुंजी का इस्तेमाल किया जा सकता है या नई कुंजी बनाई जा सकती है.

मौजूदा ब्राउज़र कुंजी का विकल्प दिखाने वाली इमेज.

'कुंजी दिखाएं' बटन पर क्लिक करें और दिखाई गई डायलॉग विंडो से कुंजी कॉपी करें.

उस Firebase Studio प्रोजेक्ट पर वापस जाएं जहां आपने पहले एचटीएमएल पेज खोला था. अब पेज में एपीआई पासकोड जोड़ा जा सकता है, ताकि Maps API वहां काम कर सके जहां पेज में "YOUR_API_KEY" मौजूद है.

एपीआई पासकोड अपडेट करना

पेज को फिर से चलाने पर, अब आपको गड़बड़ी का कोई दूसरा मैसेज दिखेगा.

रेफ़रर की अनुमति नहीं है, गड़बड़ी का मैसेज

इसका मतलब है कि जिस डेवलपमेंट डोमेन से पेज को होस्ट किया जा रहा है उसे अनुमति नहीं है. हमने सिर्फ़ डिप्लॉय किए गए डोमेन को जोड़ा है. हमें इस साइट को Firebase होस्टिंग का इस्तेमाल करके, सही डोमेन पर पब्लिश करना होगा. ज़्यादा जानकारी के लिए, यहां जाएं:

Firebase Hosting की मदद से डिप्लॉय करना

और इस वीडियो में

Project IDX में, Firebase वेब ऐप्लिकेशन को तेज़ी से बनाएं, टेस्ट करें, और डिप्लॉय करें

बिलिंग की सुविधा चालू नहीं है.

ज़्यादा जानकारी के लिए, Maps JavaScript API की साइट पर मैप लोड होने से जुड़ी गड़बड़ियां सेक्शन देखें.

अगर आपको RefererNotAllowedMapError दिखती है, तो पेज को सही डोमेन पर डिप्लॉय करके इसे ठीक किया जा सकता है.

Firebase Studio पर वापस जाएं. इसके बाद, होस्टिंग के विकल्प खोलने के लिए, "Firebase Studio" आइकॉन पर क्लिक करें. यह आइकॉन, आपके सेट अप किए गए विकल्प के हिसाब से सबसे बाईं या सबसे दाईं ओर हो सकता है.

इस इमेज में Firebase Studio का आइकॉन दिखाया गया है.

इस कोडलैब में, आपको अपने Firebase इंस्टेंस को Studio ऐप्लिकेशन से कनेक्ट करने के लिए, "ऐप्लिकेशन को Firebase के साथ होस्ट करें" विकल्प चुनना होगा.

Firebase की मदद से होस्ट करने का विकल्प.

इसके बाद, पुष्टि करने की प्रोसेस शुरू करने के लिए, "Firebase से पुष्टि करें" पर क्लिक करें. इससे आपका खाता, Studio में बैकएंड के साथ होस्टिंग को अपने-आप मैनेज कर पाएगा.

Firebase से पुष्टि करने का विकल्प दिखाने वाली इमेज.

डिप्लॉयमेंट को अनुमति देने के लिए, कमांड विंडो में दिए गए निर्देशों का पालन करें.

पुष्टि करने के निर्देश दिखाने वाली इमेज.

स्क्रीन पर दिए गए निर्देशों का पालन करें. इनमें नई विंडो खोलना भी शामिल है. इसके बाद, ऑथराइज़ेशन कोड को उस जगह पर कॉपी करें जहां इसकी ज़रूरत है. फिर, इसे Firebase studio की कमांड विंडो में चिपकाएं.

Firebase ऑथराइज़ेशन कोड दिखाने वाली इमेज.

इस प्रोसेस के बारे में ज़्यादा जानकारी पाने के लिए, यहां जाएं:

https://firebase.google.com/docs/studio/deploy-app

इसके बाद, प्रोजेक्ट को Firebase प्रोजेक्ट से लिंक करने के लिए, "initialize firebase hosting" पर क्लिक करें.

"किसी मौजूदा प्रोजेक्ट का इस्तेमाल करें" को चुनें. इसके बाद, वह प्रोजेक्ट चुनें जिसे आपने पिछले सेक्शन में बनाया था. बाकी डिफ़ॉल्ट सेटिंग स्वीकार करें. आपके उदाहरण में, प्रोजेक्ट सेट अप करते समय चुने गए नाम के हिसाब से बदलाव हो सकता है.

Firebase होस्टिंग प्रोजेक्ट का सेटअप.

एक्सप्लोरर व्यू पर वापस जाएं और सार्वजनिक डायरेक्ट्री में बनाई गई index.html फ़ाइल को उस फ़ाइल से बदलें जो आपके पास पहले से रूट डायरेक्ट्री में मौजूद है.

होस्टिंग फ़ाइल स्ट्रक्चर दिखाने वाली इमेज.

अब Firebase Studio के साइडबार पर वापस जाएं और साइट को प्रोडक्शन में डिप्लॉय करें.

इस इमेज में, प्रोडक्शन में डिप्लॉय करने की प्रोसेस दिखाई गई है.

इससे कंसोल में डिप्लॉयमेंट के चरण दिखेंगे.

डिप्लॉयमेंट के चरण दिखाने वाली इमेज.

डिप्लॉय की गई साइट को, दिखाए गए "होस्टिंग यूआरएल" से खोलें. यहां इसे https://my-app-check-project.web.app/ के तौर पर दिखाया गया है, लेकिन यह आपके प्रोजेक्ट के लिए अलग होगा.

अब ऐप्लिकेशन, पेज पर मैप दिखाएगा. ऐसा इसलिए, क्योंकि एपीआई उन डोमेन के लिए काम करते हैं जिनका इस्तेमाल किया जा रहा है.

इमेज में, होस्टिंग बिल्ड मेन्यू दिखाया गया है.

अब एक वर्किंग पेज है. इसमें एपीआई पासकोड के साथ इस्तेमाल किए जा सकने वाले एपीआई के टाइप और उन डोमेन के बारे में बताया गया है जिनके लिए एपीआई पासकोड का इस्तेमाल किया जा सकता है. अगला चरण, सिर्फ़ उस डोमेन के लिए ऐक्सेस को लॉक करना है. इसके लिए, आपको पहले से जनरेट किए गए Firebase स्क्रिप्ट सेक्शन को जोड़ना होगा, ताकि App Check का इस्तेमाल करके पेज को सुरक्षित किया जा सके. यह काम अगले सेक्शन में किया जाएगा.

10. सुरक्षित पेज

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

यह भी देखा जा सकता है कि Maps API के इस्तेमाल को Firebase में ट्रैक किया जा रहा है. इसमें किसी भी सही टोकन का इस्तेमाल नहीं किया जा रहा है. इसलिए, यह ऐसे अनुरोध कर रहा है जिनकी पुष्टि नहीं हुई है.

कनेक्शन की ज़रूरी जानकारी, Firebase प्रोजेक्ट से मिल सकती है.

उस कंसोल से Firebase की जानकारी पाएं जिसमें Firebase कॉन्फ़िगरेशन की जानकारी शामिल है. Firebase में प्रोजेक्ट सेटिंग पेज पर जाएं. इसके बाद, ऐप्लिकेशन के सीडीएन सेक्शन में जाकर, सीडीएन सेटअप के लिए कोड सेक्शन (सबसे आसान) पर जाएं.

Firebase प्रोजेक्ट में, प्रोजेक्ट सेटिंग दिखाने के लिए कॉग आइकॉन चुनें.

Firebase प्रोजेक्ट की सेटिंग दिखाने वाली इमेज

इससे यह पेज खुलता है. इसमें आपके ऐप्लिकेशन के सामान्य सेक्शन में जानकारी होती है.

Firebase ऐप्लिकेशन कॉन्फ़िगरेशन की सेटिंग.

इसे Firebase Studio के उस पेज (public/index.html) में कॉपी करें जिसमें मैप मौजूद है और जिसे होस्ट किया गया है. यह इस तरह दिखेगा. इसमें आपकी जानकारी होगी, न कि इस फ़ाइल में दी गई जानकारी:

<!doctype html>
<html>

<head>
 <title>Secure Map</title>
 <style>
   #map {
     height: 100%;
   }

   html,
   body {
     height: 100%;
     margin: 0;
     padding: 0;
     font-family: Arial, Helvetica, sans-serif;
   }
 </style>
</head>

<body>
 <h3>App Check Security Demo</h3>
 <!--The div element for the map -->
 <div id="map"></div>
 <script>
   (g => { var h, a, k, p = "The Google Maps JavaScript API", c = "google", l = "importLibrary", q = "__ib__", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement("script")); e.set("libraries", [...r] + ""); for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); e.set("callback", c + ".maps." + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + " could not load.")); a.nonce = m.querySelector("script[nonce]")?.nonce || ""; m.head.append(a) })); d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({
     key: "YOUR_API_KEY",
     v: "weekly",
     // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
     // Add other bootstrap parameters as needed, using camel case.
   });
 </script>
 <script type="module">
   // Import the functions you need from the SDKs you need
   import { initializeApp } from "https://www.gstatic.com/firebasejs/12.2.1/firebase-app.js";

   const firebaseConfig = {
     apiKey: "YOUR_API_KEY",
     authDomain: "appcheck-map.firebaseapp.com",
     projectId: "appcheck-map",
     storageBucket: "appcheck-map.firebasestorage.app",
     messagingSenderId: "YOUR_SENDER_KEY",
     appId: "YOUR_APP_ID"
   };
    // Initialize Firebase
   const app = initializeApp(firebaseConfig);

   let map;
   async function initMap() {
     const { Map } = await google.maps.importLibrary("maps");
     map = new Map(document.getElementById("map"), {
       center: { lat: 51.5208, lng: -0.0977 },
       zoom: 17,
     });
   }
   initMap();
 </script>
</body>

</html>

अब हमारे ऐप्लिकेशन में Firebase जोड़ दिया गया है. इसलिए, reCAPTCHA लाइब्रेरी को कॉल करने के लिए, दी गई साइट कुंजी का इस्तेमाल किया जा सकता है. यह कुंजी आपको reCAPTCHA साइट से पहले मिली थी.

reCAPTCHA साइट कुंजी डालने की सुविधा दिखाने वाली इमेज.

इन सेक्शन को जोड़ने के बारे में ज़्यादा जानने के लिए, Maps के इस दस्तावेज़ पेज पर जाएं:

https://developers.google.com/maps/documentation/javascript/maps-app-check

पेज में App Check लाइब्रेरी जोड़ें. इसके बाद, firebase कॉन्फ़िगरेशन के साथ App Check को शुरू करने के लिए फ़ंक्शन लोड करें. साथ ही, ReCaptchaV3Provider का इस्तेमाल करके टोकन पाएं.

सबसे पहले, App Check लाइब्रेरी इंपोर्ट करें:

       import {
           getToken,
           initializeAppCheck,
           ReCaptchaV3Provider,
       } from "https://www.gstatic.com/firebasejs/12.2.1/firebase-app-check.js";

इसके बाद, साइट टोकन का इस्तेमाल करके, Firebase कॉन्फ़िगरेशन और reCAPTCHA प्रोवाइडर के साथ App Check को शुरू करने के लिए कोड जोड़ें.

       // Get App Check Token
       const appCheck = initializeAppCheck(app, {
           provider: new ReCaptchaV3Provider('<INSERT SITE KEY>'),
           isTokenAutoRefreshEnabled: true,
       });

टोकन पाने के लिए, Maps Core लाइब्रेरी के सेटिंग फ़ंक्शन का इस्तेमाल करके, मैप कंट्रोल में कोई फ़ंक्शन अटैच करें. इससे टोकन के अनुरोध, मैप कंट्रोल की ज़रूरत के हिसाब से किए जाएंगे. यह टोकन की लाइफ़ लेंथ पर निर्भर करेगा.

       const { Settings } = await google.maps.importLibrary('core');
     Settings.getInstance().fetchAppCheckToken = () =>
           getToken(appCheck, /* forceRefresh = */ false);

पूरी फ़ाइल यहां दी गई है:

<!doctype html>
<html>

<head>
 <title>Secure Map</title>
 <style>
   #map {
     height: 100%;
   }

   html,
   body {
     height: 100%;
     margin: 0;
     padding: 0;
     font-family: Arial, Helvetica, sans-serif;
   }
 </style>
</head>

<body>
 <h3>App Check Security Demo</h3>
 <!--The div element for the map -->
 <div id="map"></div>
 <script>
   (g => { var h, a, k, p = "The Google Maps JavaScript API", c = "google", l = "importLibrary", q = "__ib__", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement("script")); e.set("libraries", [...r] + ""); for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); e.set("callback", c + ".maps." + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + " could not load.")); a.nonce = m.querySelector("script[nonce]")?.nonce || ""; m.head.append(a) })); d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({
     key: "YOUR_API_KEY",
     v: "weekly",
     // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
     // Add other bootstrap parameters as needed, using camel case.
   });
 </script>
 <script type="module">
   import { initializeApp } from "https://www.gstatic.com/firebasejs/12.2.1/firebase-app.js";

   import {
     getToken,
     initializeAppCheck,
     ReCaptchaV3Provider,
   } from "https://www.gstatic.com/firebasejs/12.2.1/firebase-app-check.js";

   const firebaseConfig = {
     apiKey: "YOUR_API_KEY",
     authDomain: "appcheck-map.firebaseapp.com",
     projectId: "appcheck-map",
     storageBucket: "appcheck-map.firebasestorage.app",
     messagingSenderId: "YOUR_SENDER_KEY",
     appId: "YOUR_APP_ID"
   };

   // Initialize Firebase
   const app = initializeApp(firebaseConfig);

   // Get App Check Token
   const appCheck = initializeAppCheck(app, {
     provider: new ReCaptchaV3Provider('<INSERT SITE KEY>'),
     isTokenAutoRefreshEnabled: true,
   });

   let map;
   async function initMap() {
     const { Map } = await google.maps.importLibrary("maps");

     const { Settings } = await google.maps.importLibrary('core');
     Settings.getInstance().fetchAppCheckToken = () =>
       getToken(appCheck, /* forceRefresh = */ false);

     map = new Map(document.getElementById("map"), {
       center: { lat: 51.5208, lng: -0.0977 },
       zoom: 17,
     });
   }
   initMap();
 </script>
</body>

</html>

Firebase Studio का इस्तेमाल करके, इसे Firebase साइट पर डिप्लॉय करें और पेज चलाएं.

11. मॉनिटरिंग की सुविधा लागू करना

अब पेज सेट अप हो गया है. इसे चलाने पर, आपको दिखेगा कि इसकी जांच की जा रही है. Firebase कंसोल पर वापस जाएं और App Check सेक्शन को फिर से खोलें. अब App Check, Maps JavaScript API की निगरानी करेगा.

निगरानी की जांच करने की सुविधा चालू है.

विंडो खोलने पर अब यह दिखेगा कि क्लाइंट अनुरोध कर रहे हैं और पुष्टि करने की सुविधा काम कर रही है. इसे ग्राफ़ पर गहरे नीले रंग के "पुष्टि हो चुकी है" अनुरोधों से दिखाया गया है. अन्य अनुरोधों में, पुष्टि की प्रोसेस पूरी होने से पहले डेवलपमेंट फ़ेज़ के दौरान कॉल दिखेंगे.

पुष्टि किए गए अनुरोधों को दिखाने वाला ग्राफ़.

अब जब क्लाइंट काम कर रहे हैं, तो साइट पर एनफ़ोर्समेंट की सुविधा चालू की जा सकती है. इससे यह पक्का किया जा सकेगा कि अमान्य क्लाइंट ऐप्लिकेशन से एपीआई कुंजियों का इस्तेमाल न किया जा सके. नीति लागू करने की प्रोसेस शुरू करने के लिए, 'लागू करें' बटन पर क्लिक करें.

इस इमेज में, उल्लंघन ठीक करने के लिए कार्रवाई करने वाला बटन दिखाया गया है.

इस पर क्लिक करने से, आपको एक बड़ा चेतावनी वाला मैसेज दिखेगा. इसमें बताया जाएगा कि इससे आपका ऐप्लिकेशन लॉक हो जाएगा. असल में, ऐसा सिर्फ़ तब किया जाता है, जब आपको पता हो कि आपके सभी क्लाइंट के पास सही कुंजियां हैं और वे काम कर रही हैं. ऐसा न होने पर, आपके उपयोगकर्ताओं को साइट का ऐक्सेस नहीं मिल पाएगा.

नीति उल्लंघन ठीक करने के लिए, कार्रवाई से जुड़ा डायलॉग दिखाने वाली इमेज.

इसे लागू होने में कुछ समय लग सकता है. अगर आप नीति उल्लंघन ठीक करने के लिए तुरंत जांच करते हैं, तो हो सकता है कि बदलाव लागू होने में समय लगे.

लागू होने में 15 मिनट लगते हैं.

पेज के लिए अनुरोध करते समय, आपको यह देखना चाहिए कि वह पहले की तरह काम कर रहा हो. साइट में कोई बदलाव नहीं हुआ है.

अब आपको समय के साथ, कंसोल में पुष्टि किए गए अनुरोधों की संख्या में बढ़ोतरी दिखेगी. जैसा कि यहां दिखाया गया है:

पुष्टि के अनुरोधों में बढ़ोतरी दिखाने वाला ग्राफ़.

यह देखने के लिए कि यह काम कर रहा है या नहीं, कोडलैब में ओरिजनल सैंपल पर वापस जाएं और ऐप्लिकेशन की जांच करने की सुविधा के बिना एक नया पेज बनाएं. इस पेज को nocheck.html नाम दें और इसे public फ़ोल्डर में index.html की जगह पर रखें.

<!doctype html>
<html>

<head>
 <title>Secure Map</title>
 <style>
   #map {
     height: 100%;
   }

   html,
   body {
     height: 100%;
     margin: 0;
     padding: 0;
     font-family: Arial, Helvetica, sans-serif;
   }
 </style>
</head>

<body>
 <h3>App Check Security Demo</h3>
 <!--The div element for the map -->
 <div id="map"></div>
 <script>
   (g => { var h, a, k, p = "The Google Maps JavaScript API", c = "google", l = "importLibrary", q = "__ib__", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement("script")); e.set("libraries", [...r] + ""); for (k in g) e.set(k.replace(/[A-Z]/g, t => "_" + t[0].toLowerCase()), g[k]); e.set("callback", c + ".maps." + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + " could not load.")); a.nonce = m.querySelector("script[nonce]")?.nonce || ""; m.head.append(a) })); d[l] ? console.warn(p + " only loads once. Ignoring:", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({
     key: "YOUR_API_KEY",
     v: "weekly",
     // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
     // Add other bootstrap parameters as needed, using camel case.
   });
 </script>
 <script>
   let map;
   async function initMap() {
     const { Map } = await google.maps.importLibrary("maps");
     map = new Map(document.getElementById("map"), {
       center: { lat: 51.5208, lng: -0.0977 },
       zoom: 17,
     });
   }
   initMap();
 </script>
</body>

</html>

यह प्रोसेस पूरी करने और सही एपीआई कुंजी डालने के बाद, पेज का अनुरोध करते समय (yourdomain/nocheck.html का इस्तेमाल करें) आपको गड़बड़ी का यह ग्रे बॉक्स दिखेगा.

&#39;कुछ गड़बड़ी हुई&#39; गड़बड़ी का मैसेज.

कंसोल की जांच करने पर, आपको इस तरह का गड़बड़ी का मैसेज दिखेगा:

App Check की पुष्टि करने से जुड़ी गड़बड़ी का अमान्य मैसेज

ऐप्लिकेशन की जांच करने की सुविधा ने पेज पर मौजूद मैप के अनुरोध को ब्लॉक कर दिया है. ऐसा इसलिए हुआ है, क्योंकि अब इसे लागू की गई साइट के लिए ऐप्लिकेशन की जांच करने वाला टोकन नहीं मिल रहा है.

12. बधाई हो!

बधाई हो, आपने अपनी साइट पर App Check की सुविधा चालू कर ली है!

काम कर रहे ऐप्लिकेशन को दिखाने वाला पेज

आपने Firebase App Check का इस्तेमाल करके एक ऐसा ऐप्लिकेशन बनाया है जो यह पक्का करता है कि अनुरोध किसी मान्य डोमेन और उपयोगकर्ता से किए गए हों.

आपको क्या सीखने को मिला

  • वेब पेज को होस्ट और डिप्लॉय करने के लिए, Firebase Studio का इस्तेमाल कैसे करें.
  • Google Maps Platform API को चालू करने और सुरक्षित करने के लिए, Cloud Console का इस्तेमाल कैसे करें.
  • कॉल की पुष्टि करने के लिए इस्तेमाल की जा सकने वाली कुंजियां जनरेट करने के लिए, reCAPTURE का इस्तेमाल कैसे करें.
  • Firebase App Check का इस्तेमाल करने और इसे Maps JavaScript API में इंटिग्रेट करने का तरीका.
  • Firebase Studio की मदद से, सुरक्षित की गई साइटों पर कॉल को लागू करने और उन्हें मॉनिटर करने का तरीका जानें.

आगे क्या करना है?

  • Google Maps JavaScript API के लिए, App Check से जुड़ा दस्तावेज़ देखें
  • Firebase में App Check के बारे में ज़्यादा जानें.
  • App Check और Google Maps Places API के साथ कोई दूसरा कोडलैब आज़माएं.
  • reCAPTCHA के बारे में ज़्यादा जानें.