JavaScript का इस्तेमाल करके, फ़ोन नंबर की मदद से Firebase की पुष्टि करें

उपयोगकर्ता के फ़ोन पर एसएमएस भेजकर, उसे साइन इन करने के लिए Firebase Authentication का इस्तेमाल किया जा सकता है. उपयोगकर्ता, एसएमएस मैसेज में मौजूद एक बार इस्तेमाल किया जा सकने वाला कोड डालकर साइन इन करता है.

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

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

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

सुरक्षा से जुड़ी समस्याएं

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

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

अपने Firebase प्रोजेक्ट के लिए, फ़ोन नंबर से साइन इन करने की सुविधा चालू करना

एसएमएस से उपयोगकर्ताओं को साइन इन करने की सुविधा देने के लिए, आपको पहले अपने Firebase प्रोजेक्ट के लिए, फ़ोन नंबर से साइन इन करने का तरीका चालू करना होगा:

  1. Firebase console में, सुरक्षा > प्रमाणीकरण पर जाएं.
  2. साइन-इन का तरीका टैब में जाकर, फ़ोन से साइन-इन करने की सुविधा देने वाली कंपनी को चालू करें.
  3. उन इलाकों के लिए नीति सेट करें जहां आपको एसएमएस भेजने की अनुमति देनी है या नहीं देनी है. एसएमएस के लिए देश/इलाके के हिसाब से नीति सेट करने से, आपके ऐप्लिकेशन को एसएमएस के गलत इस्तेमाल से बचाया जा सकता है. नए प्रोजेक्ट के लिए, डिफ़ॉल्ट नीति में किसी भी क्षेत्र को अनुमति नहीं दी जाती है.
    1. Firebase कंसोल में, सुरक्षा > पुष्टि करें > सेटिंग टैब पर जाएं.
    2. एसएमएस भेजने के लिए क्षेत्र से जुड़ी नीति सेक्शन में जाकर, एसएमएस भेजने के लिए क्षेत्र से जुड़ी नीति सेट अप करें.
  4. अगर आपने अब तक अपने ऐप्लिकेशन के डोमेन को अनुमति नहीं दी है, तो ऐसा करें:
    1. Firebase कंसोल में, सुरक्षा > पुष्टि करें > सेटिंग टैब पर जाएं.
    2. अनुमति वाले डोमेन सेक्शन में जाकर, डोमेन जोड़ें पर क्लिक करें. इसके बाद, अपना डोमेन जोड़ें.

    ध्यान दें कि फ़ोन से पुष्टि करने के लिए, localhost को होस्ट किए गए डोमेन के तौर पर इस्तेमाल करने की अनुमति नहीं है.

reCAPTCHA की पुष्टि करने वाले की सुविधा सेट अप करना

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

आपको reCAPTCHA क्लाइंट को मैन्युअल तरीके से सेट अप करने की ज़रूरत नहीं है. Firebase SDK के RecaptchaVerifier ऑब्जेक्ट का इस्तेमाल करने पर, Firebase अपने-आप ज़रूरी क्लाइंट कुंजियां और सीक्रेट बनाता है और उन्हें मैनेज करता है.

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

reCAPTCHA को रेंडर करने से पहले, Auth इंस्टेंस पर भाषा कोड अपडेट करके, रेंडर किए गए reCAPTCHA को उपयोगकर्ता की पसंद के हिसाब से बनाया जा सकता है. ऊपर बताई गई स्थानीय भाषा की सेटिंग, उपयोगकर्ता को भेजे गए एसएमएस पर भी लागू होगी. इस एसएमएस में पुष्टि करने के लिए कोड शामिल होगा.

Web

import { getAuth } from "firebase/auth";

const auth = getAuth();
auth.languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// auth.useDeviceLanguage();

Web

firebase.auth().languageCode = 'it';
// To apply the default browser preference instead of explicitly setting it.
// firebase.auth().useDeviceLanguage();

दिखाई न देने वाला reCAPTCHA इस्तेमाल करना

दिखाई न देने वाले reCAPTCHA का इस्तेमाल करने के लिए, RecaptchaVerifier ऑब्जेक्ट बनाएं. इसमें size पैरामीटर को invisible पर सेट करें. साथ ही, उस बटन का आईडी डालें जो आपके साइन-इन फ़ॉर्म को सबमिट करता है. उदाहरण के लिए:

Web

import { getAuth, RecaptchaVerifier } from "firebase/auth";

const auth = getAuth();
window.recaptchaVerifier = new RecaptchaVerifier(auth, 'sign-in-button', {
  'size': 'invisible',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    onSignInSubmit();
  }
});

Web

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', {
  'size': 'invisible',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    onSignInSubmit();
  }
});

reCAPTCHA विजेट का इस्तेमाल करना

दिखने वाले reCAPTCHA विजेट का इस्तेमाल करने के लिए, अपने पेज पर एक ऐसा एलिमेंट बनाएं जिसमें विजेट शामिल हो. इसके बाद, एक RecaptchaVerifier ऑब्जेक्ट बनाएं. ऐसा करते समय, कंटेनर का आईडी डालें. उदाहरण के लिए:

Web

import { getAuth, RecaptchaVerifier } from "firebase/auth";

const auth = getAuth();
window.recaptchaVerifier = new RecaptchaVerifier(auth, 'recaptcha-container', {});

Web

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');

ज़रूरी नहीं: reCAPTCHA पैरामीटर तय करना

आपके पास RecaptchaVerifier ऑब्जेक्ट पर कॉलबैक फ़ंक्शन सेट करने का विकल्प होता है. जब उपयोगकर्ता reCAPTCHA को हल कर लेता है या उपयोगकर्ता के फ़ॉर्म सबमिट करने से पहले reCAPTCHA की समयसीमा खत्म हो जाती है, तब इन फ़ंक्शन को कॉल किया जाता है:

Web

import { getAuth, RecaptchaVerifier } from "firebase/auth";

const auth = getAuth();
window.recaptchaVerifier = new RecaptchaVerifier(auth, 'recaptcha-container', {
  'size': 'normal',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    // ...
  },
  'expired-callback': () => {
    // Response expired. Ask user to solve reCAPTCHA again.
    // ...
  }
});

Web

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container', {
  'size': 'normal',
  'callback': (response) => {
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    // ...
  },
  'expired-callback': () => {
    // Response expired. Ask user to solve reCAPTCHA again.
    // ...
  }
});

ज़रूरी नहीं: reCAPTCHA को पहले से रेंडर करना

अगर आपको साइन इन करने का अनुरोध सबमिट करने से पहले, reCAPTCHA को पहले से रेंडर करना है, तो render को कॉल करें:

Web

recaptchaVerifier.render().then((widgetId) => {
  window.recaptchaWidgetId = widgetId;
});

Web

recaptchaVerifier.render().then((widgetId) => {
  window.recaptchaWidgetId = widgetId;
});

render हल होने के बाद, आपको reCAPTCHA का विजेट आईडी मिलता है. इसका इस्तेमाल करके, reCAPTCHA API को कॉल किया जा सकता है:

Web

const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);

Web

const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);

उपयोगकर्ता के फ़ोन पर पुष्टि करने के लिए कोड भेजें

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

  1. उपयोगकर्ता का फ़ोन नंबर पाएं.

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

  2. signInWithPhoneNumber को कॉल करें. इसमें उपयोगकर्ता का फ़ोन नंबर और पहले बनाया गया RecaptchaVerifier पास करें.

    Web

    import { getAuth, signInWithPhoneNumber } from "firebase/auth";
    
    const phoneNumber = getPhoneNumberFromUserInput();
    const appVerifier = window.recaptchaVerifier;
    
    const auth = getAuth();
    signInWithPhoneNumber(auth, phoneNumber, appVerifier)
        .then((confirmationResult) => {
          // SMS sent. Prompt user to type the code from the message, then sign the
          // user in with confirmationResult.confirm(code).
          window.confirmationResult = confirmationResult;
          // ...
        }).catch((error) => {
          // Error; SMS not sent
          // ...
        });

    Web

    const phoneNumber = getPhoneNumberFromUserInput();
    const appVerifier = window.recaptchaVerifier;
    firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
        .then((confirmationResult) => {
          // SMS sent. Prompt user to type the code from the message, then sign the
          // user in with confirmationResult.confirm(code).
          window.confirmationResult = confirmationResult;
          // ...
        }).catch((error) => {
          // Error; SMS not sent
          // ...
        });
    अगर signInWithPhoneNumber से कोई गड़बड़ी होती है, तो reCAPTCHA को रीसेट करें, ताकि उपयोगकर्ता फिर से कोशिश कर सके:
    grecaptcha.reset(window.recaptchaWidgetId);
    
    // Or, if you haven't stored the widget ID:
    window.recaptchaVerifier.render().then(function(widgetId) {
      grecaptcha.reset(widgetId);
    });

signInWithPhoneNumber तरीके से, उपयोगकर्ता को reCAPTCHA चैलेंज दिया जाता है. अगर उपयोगकर्ता चैलेंज पूरा कर लेता है, तो Firebase Authentication से अनुरोध किया जाता है कि वह उपयोगकर्ता के फ़ोन पर, पुष्टि करने के लिए कोड वाला एसएमएस मैसेज भेजे.

पुष्टि करने के लिए मिले कोड का इस्तेमाल करके, उपयोगकर्ता को साइन इन करना

signInWithPhoneNumber को कॉल करने के बाद, उपयोगकर्ता को एसएमएस से मिला पुष्टि करने वाला कोड डालने के लिए कहें. इसके बाद, उपयोगकर्ता को साइन इन करें. इसके लिए, ConfirmationResult ऑब्जेक्ट के confirm तरीके में कोड पास करें. यह ऑब्जेक्ट, signInWithPhoneNumber के फ़ुलफ़िलमेंट हैंडलर (यानी कि इसके then ब्लॉक) को पास किया गया था. उदाहरण के लिए:

Web

const code = getCodeFromUserInput();
confirmationResult.confirm(code).then((result) => {
  // User signed in successfully.
  const user = result.user;
  // ...
}).catch((error) => {
  // User couldn't sign in (bad verification code?)
  // ...
});

Web

const code = getCodeFromUserInput();
confirmationResult.confirm(code).then((result) => {
  // User signed in successfully.
  const user = result.user;
  // ...
}).catch((error) => {
  // User couldn't sign in (bad verification code?)
  // ...
});

अगर confirm को कॉल करने पर, उपयोगकर्ता को साइन इन करने में मदद मिलती है, तो इसका मतलब है कि उपयोगकर्ता ने साइन इन कर लिया है.

इंटरमीडिएट AuthCredential ऑब्जेक्ट पाना

अगर आपको उपयोगकर्ता के खाते के लिए AuthCredential ऑब्जेक्ट चाहिए, तो पुष्टि करने के लिए मिले कोड और पुष्टि करने के लिए मिले कोड को PhoneAuthProvider.credential पर भेजें. इसके लिए, confirm को कॉल न करें:

var credential = firebase.auth.PhoneAuthProvider.credential(confirmationResult.verificationId, code);

इसके बाद, क्रेडेंशियल का इस्तेमाल करके उपयोगकर्ता को साइन इन किया जा सकता है:

firebase.auth().signInWithCredential(credential);

फ़र्ज़ी फ़ोन नंबरों से टेस्ट करना

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

  • इस्तेमाल के कोटे का इस्तेमाल किए बिना, फ़ोन नंबर से पुष्टि करने की सुविधा को टेस्ट करें.
  • असली एसएमएस भेजे बिना, फ़ोन नंबर की पुष्टि करने की सुविधा को टेस्ट करें.
  • एक ही फ़ोन नंबर से लगातार टेस्ट चलाएं. ऐसा करने पर, आपको थ्रॉटल नहीं किया जाएगा. इससे App Store की समीक्षा के दौरान, ऐप्लिकेशन के अस्वीकार होने का जोखिम कम हो जाता है. ऐसा तब होता है, जब समीक्षक टेस्टिंग के लिए उसी फ़ोन नंबर का इस्तेमाल करता है.
  • डेवलपमेंट एनवायरमेंट में आसानी से टेस्ट करें. इसके लिए, आपको कोई अतिरिक्त प्रयास करने की ज़रूरत नहीं है. जैसे, Google Play services के बिना iOS सिम्युलेटर या Android एम्युलेटर में डेवलप करने की सुविधा.
  • इंटिग्रेशन टेस्ट लिखें. इसके लिए, आपको सुरक्षा जांचों से नहीं रोका जाएगा. आम तौर पर, ये जांचें प्रोडक्शन एनवायरमेंट में असली फ़ोन नंबर पर लागू होती हैं.

फ़र्ज़ी फ़ोन नंबरों के लिए, इन ज़रूरी शर्तों को पूरा करना होगा:

  1. पक्का करें कि आपने ऐसे फ़ोन नंबर इस्तेमाल किए हों जो वाकई काल्पनिक हों और पहले से मौजूद न हों. Firebase Authentication आपको असली उपयोगकर्ताओं के इस्तेमाल किए गए मौजूदा फ़ोन नंबरों को टेस्ट नंबर के तौर पर सेट करने की अनुमति नहीं देता. अमेरिका में टेस्ट के लिए इस्तेमाल किए जाने वाले फ़ोन नंबर के तौर पर, 555 प्रीफ़िक्स वाले नंबर इस्तेमाल किए जा सकते हैं. उदाहरण के लिए: +1 650-555-3434
  2. फ़ोन नंबर, लंबाई और अन्य शर्तों के हिसाब से सही फ़ॉर्मैट में होने चाहिए. इनकी पुष्टि भी उसी तरीके से की जाएगी जिस तरह से किसी असली उपयोगकर्ता के फ़ोन नंबर की पुष्टि की जाती है.
  3. डेवलपमेंट के लिए, ज़्यादा से ज़्यादा 10 फ़ोन नंबर जोड़े जा सकते हैं.
  4. ऐसे टेस्ट फ़ोन नंबर/कोड का इस्तेमाल करें जिन्हें आसानी से न तो पहचाना जा सके और न ही बदला जा सके. साथ ही, उन्हें समय-समय पर बदलें.

फ़र्ज़ी फ़ोन नंबर और पुष्टि करने के कोड बनाना

  1. Firebase console में, सुरक्षा > पुष्टि पर जाएं.
  2. अगर आपने पहले से फ़ोन से साइन इन करने की सुविधा चालू नहीं की है, तो साइन-इन का तरीका टैब में जाकर, इसे चालू करें.
  3. जांच के लिए फ़ोन नंबर सेक्शन को बड़ा करें.
  4. वह फ़ोन नंबर डालें जिसकी आपको जांच करनी है. उदाहरण के लिए: +1 650-555-3434.
  5. उस नंबर के लिए, पुष्टि करने के लिए छह अंकों का कोड डालें. उदाहरण के लिए: 654321.
  6. हर नंबर के लिए, जोड़ें पर क्लिक करें. अगर ज़रूरी हो, तो फ़ोन नंबर और उसके कोड को मिटाया जा सकता है. इसके लिए, उस लाइन पर कर्सर घुमाएं और ट्रैश आइकॉन पर क्लिक करें.

मैन्युअल टेस्टिंग

अपने ऐप्लिकेशन में, काल्पनिक फ़ोन नंबर का इस्तेमाल सीधे तौर पर शुरू किया जा सकता है. इससे आपको डेवलपमेंट के दौरान, मैन्युअल टेस्टिंग करने की सुविधा मिलती है. इसके लिए, आपको कोटा से जुड़ी समस्याओं या थ्रॉटलिंग का सामना नहीं करना पड़ता. Google Play services इंस्टॉल किए बिना, सीधे तौर पर iOS सिम्युलेटर या Android एम्युलेटर से भी टेस्ट किया जा सकता है.

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

साइन-इन की प्रोसेस पूरी होने पर, उस फ़ोन नंबर से Firebase उपयोगकर्ता खाता बन जाता है. इस उपयोगकर्ता का व्यवहार और प्रॉपर्टी, फ़ोन नंबर का इस्तेमाल करने वाले असली उपयोगकर्ता की तरह ही होती हैं. साथ ही, यह Realtime Database/Cloud Firestore और अन्य सेवाओं को उसी तरह ऐक्सेस कर सकता है. इस प्रोसेस के दौरान जनरेट किए गए आईडी टोकन का सिग्नेचर, असल फ़ोन नंबर का इस्तेमाल करने वाले व्यक्ति के सिग्नेचर जैसा ही होता है.

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

इंटिग्रेशन टेस्टिंग

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

वेब पर, firebase.auth.RecaptchaVerifier को रेंडर करने से पहले, appVerificationDisabledForTesting को true पर सेट करें. इससे reCAPTCHA अपने-आप हल हो जाता है. इसलिए, आपको मैन्युअल तरीके से इसे हल करने की ज़रूरत नहीं पड़ती. ध्यान दें कि reCAPTCHA बंद होने के बावजूद, किसी काल्पनिक फ़ोन नंबर का इस्तेमाल करने पर साइन इन नहीं किया जा सकेगा. इस API के साथ सिर्फ़ काल्पनिक फ़ोन नंबरों का इस्तेमाल किया जा सकता है.

// Turn off phone auth app verification.
firebase.auth().settings.appVerificationDisabledForTesting = true;

var phoneNumber = "+16505554567";
var testVerificationCode = "123456";

// This will render a fake reCAPTCHA as appVerificationDisabledForTesting is true.
// This will resolve after rendering without app verification.
var appVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');
// signInWithPhoneNumber will call appVerifier.verify() which will resolve with a fake
// reCAPTCHA response.
firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
    .then(function (confirmationResult) {
      // confirmationResult can resolve with the fictional testVerificationCode above.
      return confirmationResult.confirm(testVerificationCode)
    }).catch(function (error) {
      // Error; SMS not sent
      // ...
    });

ऐप्लिकेशन की पुष्टि करने की सुविधा बंद होने पर, दिखने वाले और न दिखने वाले मॉक reCAPTCHA ऐप्लिकेशन की पुष्टि करने वाले अलग-अलग तरीके से काम करते हैं:

  • दिखने वाला reCAPTCHA: जब दिखने वाले reCAPTCHA को appVerifier.render() के ज़रिए रेंडर किया जाता है, तो कुछ सेकंड के बाद यह अपने-आप हल हो जाता है. यह उस स्थिति के बराबर है जब कोई उपयोगकर्ता, रेंडर होने के तुरंत बाद reCAPTCHA पर क्लिक करता है. reCAPTCHA का जवाब कुछ समय बाद खत्म हो जाएगा. इसके बाद, यह समस्या अपने-आप ठीक हो जाएगी.
  • दिखाई न देने वाला reCAPTCHA: दिखाई न देने वाला reCAPTCHA, रेंडरिंग के दौरान अपने-आप हल नहीं होता. इसके बजाय, यह appVerifier.verify()कॉल पर या तब हल होता है, जब reCAPTCHA के बटन ऐंकर पर कुछ सेकंड के बाद क्लिक किया जाता है. इसी तरह, कुछ समय बाद जवाब की समयसीमा खत्म हो जाएगी. साथ ही, यह समस्या सिर्फ़ appVerifier.verify() कॉल के बाद या reCAPTCHA के बटन ऐंकर पर फिर से क्लिक करने पर अपने-आप ठीक होगी.

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

अगले चरण

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

  • अपने ऐप्लिकेशन में, उपयोगकर्ता की पुष्टि की स्थिति जानने का सबसे सही तरीका यह है कि Auth ऑब्जेक्ट पर एक ऑब्ज़र्वर सेट करें. इसके बाद, आपको User ऑब्जेक्ट से उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी मिल सकती है. उपयोगकर्ताओं को मैनेज करना लेख पढ़ें.

  • Firebase Realtime Database और Cloud Storage सुरक्षा नियमों में, आपको ये काम करने की सुविधा मिलती है: साइन इन किए हुए उपयोगकर्ता का यूनीक User-ID, auth वैरिएबल से पाएं, और इसका इस्तेमाल यह कंट्रोल करने के लिए करें कि कोई उपयोगकर्ता किस डेटा को ऐक्सेस कर सकता है.

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

किसी उपयोगकर्ता को साइन आउट करने के लिए, signOut को कॉल करें:

Web

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});