ऑथ डिपेंडेंसी को पसंद के मुताबिक बनाना

Firebase JS SDK के मॉड्यूलर डिज़ाइन से, आपको आपका ऐप्लिकेशन कैसे बनाया गया है. इस सुविधा की मदद से, अपनी पसंद के मुताबिक ट्रैक करें और अपने बंडल के साइज़ को ऑप्टिमाइज़ करने के लिए, जिसकी आपको ज़रूरत नहीं है.

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

import {initializeAuth, browserLocalPersistence, browserPopupRedirectResolver, browserSessionPersistence, indexedDBLocalPersistence} from "firebase/auth";
import {initializeApp} from "firebase/app";

const app = initializeApp({/** Your app config */});
const auth = initializeAuth(app, {
  persistence: [indexedDBLocalPersistence, browserLocalPersistence, browserSessionPersistence],
  popupRedirectResolver: browserPopupRedirectResolver,
});

अपनी डिपेंडेंसी तैयार करना

सभी ऐप्लिकेशन इनकी signInWithPopup या signInWithRedirect फ़ैमिली का इस्तेमाल नहीं करते फ़ंक्शन. कई ऐप्लिकेशन को indexedDB के जैसी सुविधाओं की ज़रूरत नहीं पड़ेगी या indexedDB और localStorage, दोनों पर काम करने की ज़रूरत नहीं पड़ेगी उपलब्ध नहीं होंगे. इन मामलों में, डिफ़ॉल्ट getAuth() में बहुत सारे इस्तेमाल न होने वाला ऐसा कोड जो बिना किसी वजह के बंडल का साइज़ बढ़ा देता है. इसके बजाय, ये ऐप्लिकेशन उनकी डिपेंडेंसी तैयार करना. उदाहरण के लिए, अगर आपका ऐप्लिकेशन सिर्फ़ ईमेल लिंक का इस्तेमाल करता है की पुष्टि करें और localStorage काफ़ी है (क्योंकि आप वेब या सर्विस वर्कर स्क्रिप्ट), आप Auth शुरू करके बहुत से कोड ब्लोट को हटा सकते हैं इस तरह:

import {initializeAuth, browserLocalPersistence} from "firebase/auth";
import {initializeApp} from "firebase/app";

const app = initializeApp({/** Your app config */});
const auth = initializeAuth(app, {
  persistence: browserLocalPersistence,
  // No popupRedirectResolver defined
});

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

प्लैटफ़ॉर्म के हिसाब से ज़रूरी बातें

कई मामलों में, आपको मैन्युअल रूप से ऑथराइज़ेशन डिपेंडेंसी तय करनी होगी, ताकि शुरू करने में होने वाली गड़बड़ियों से बचा जा सकता है. getAuth() फ़ंक्शन खास तौर पर प्लैटफ़ॉर्म. डिफ़ॉल्ट एंट्री पॉइंट के लिए, वह एक ब्राउज़र एनवायरमेंट है और Cordava एंट्री पॉइंट, जो कॉर्डोवा का वातावरण है. हालांकि, कभी-कभी हमें और आपके ऐप्लिकेशन के काम करने के तरीके के बीच टकराव होता है. वेब और सेवा के लिए उदाहरण के लिए, वर्कर स्क्रिप्ट, डिफ़ॉल्ट getAuth() लागू करने पर कोड जो window ऑब्जेक्ट से पढ़ता है. इससे गड़बड़ियां होंगी. उन में मामलों में, आपकी डिपेंडेंसी तैयार करना ज़रूरी है. यह कोड है सर्विस वर्कर के कॉन्टेक्स्ट में ऑथ लाइब्रेरी शुरू करने के लिए सही होगा:

import {initializeAuth, indexedDBLocalPersistence} from "firebase/auth";
import {initializeApp} from "firebase/app";

const app = initializeApp({/** Your app config */});
const auth = initializeAuth(app, {
  persistence: indexedDBLocalPersistence,
  // No popupRedirectResolver defined
});

यह कोड indexedDB परसिस्टेंस (जो कि यह, वर्कर के कॉन्टेक्स्ट में उपलब्ध होता है. साथ ही, यह popupRedirectResolver डिपेंडेंसी को हटा देता है, जो यह मान लेता है कि DOM कॉन्टेक्स्ट उपलब्ध है.

कुछ अन्य वजहों से मैन्युअल तरीके से कुछ खास प्लैटफ़ॉर्म. 'अनुमति दें' फ़ील्ड में popupRedirectResolver फ़ील्ड तय करके, कुछ मामलों में, लाइब्रेरी शुरू करने पर अतिरिक्त काम करेगी. चालू है मोबाइल ब्राउज़र पर साइन इन करते समय, लाइब्रेरी अपने-आप आपके पुष्टि करने के लिए एक iframe खोल देगी डोमेन को सुरक्षित रखने में मदद मिलती है. ऐसा ज़्यादातर लोगों के अनुभव को बेहतर बनाने के लिए किया जाता है नहीं है, लेकिन यह ठीक उस समय अतिरिक्त कोड लोड करने से प्रदर्शन पर प्रभाव डाल सकता है जब ऐप प्रारंभ होता है. initializeAuth() का इस्तेमाल करके और browserPopupRedirectResolver डिपेंडेंसी को मैन्युअल तरीके से फ़ंक्शन पर पास करना जिन्हें इसकी ज़रूरत है:

import {initializeAuth, browserLocalPersistence, browserPopupRedirectResolver, indexedDBLocalPersistence, signInWithRedirect, GoogleAuthProvider} from "firebase/auth";
import {initializeApp} from "firebase/app";

const app = initializeApp({/** Your app config */});
const auth = initializeAuth(app, {
  persistence: [indexedDBLocalPersistence, browserLocalPersistence],
});

// Later
signInWithRedirect(auth, new GoogleAuthProvider(), browserPopupRedirectResolver);

अगर हमने इन डिपेंडेंसी में browserPopupRedirectResolver को initializeAuth(), signInWithRedirect() को किए गए कॉल में तीसरा पैरामीटर है इस टूल की ज़रूरत नहीं होती. हालांकि, उस डिपेंडेंसी को कॉल पर ले जाकर signInWithRedirect() सीधे, शुरुआती प्रदर्शन के दौरान हिट हुआ शुरू करने की प्रोसेस को हटा दिया जाता है. एक से दूसरे प्लैटफ़ॉर्म पर जाने के साथ-साथ निर्भर है, लेकिन सबसे ज़रूरी बात यह है कि आप इससे मैन्युअल तौर पर लाइब्रेरी को शुरू किया जा सकता है.

पसंद के मुताबिक शुरू करने की सुविधा का इस्तेमाल कब करना चाहिए

रीकैप के तौर पर आपको बता दें कि पसंद के मुताबिक शुरू करने की सुविधा से, आपको अपने ऐप्लिकेशन की पुष्टि करने के लिए इस्तेमाल किए गए SDK टूल का इस्तेमाल. मानक getAuth() फ़ंक्शन पाने के लिए अच्छा है शुरू की गई है और इसका इस्तेमाल ज़्यादातर मामलों में किया जा सकता है. ज़्यादातर ऐप्लिकेशन में, आपके अलावा कोई और ऐप्लिकेशन getAuth() हो सकता है ज़रूरत. हालांकि, कई वजहों से आपको मैन्युअल तरीके से स्विच करना पड़ सकता है (या ज़रूरत पड़ सकती है) डिपेंडेंसी मैनेजमेंट:

  • पसंद के मुताबिक, ऐसे ऐप्लिकेशन के लिए जिनके बंडल का साइज़ और लोड होने में लगने वाला समय बहुत ज़्यादा ज़रूरी होते हैं अनुमति देने की प्रोसेस शुरू करने से, कई किलोबाइट डेटा कम हो सकता है. यह डिपेंडेंसी को के बजाय 'शुरू करें' पर क्लिक करें.
  • बिना डीओएम कॉन्टेक्स्ट (जैसे, वेब और सर्विस वर्कर) में चलने वाले कोड के लिए, गड़बड़ियों से बचने के लिए, initializeAuth() का इस्तेमाल करना ज़रूरी है.