फ़ोन नंबर और C++ का इस्तेमाल करके, Firebase से पुष्टि करें

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

इस दस्तावेज़ में बताया गया है कि का इस्तेमाल करें.

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

  1. अपने C++ में Firebase जोड़ें प्रोजेक्ट.
  2. अगर आपने अभी तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल.
  3. फ़ोन नंबर से साइन-इन करने के लिए, प्लैटफ़ॉर्म की ज़रूरी शर्तों को समझें:
    • फ़ोन नंबर से साइन इन करने की सुविधा, सिर्फ़ मोबाइल प्लैटफ़ॉर्म के लिए है.
    • iOS पर, फ़ोन नंबर से साइन इन करने के लिए किसी डिवाइस की ज़रूरत होती है. यह सिम्युलेटर पर काम नहीं करेगा.

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

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

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

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

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

  1. Firebase कंसोल में, पुष्टि करना सेक्शन खोलें.
  2. साइन इन करने का तरीका पेज पर, फ़ोन नंबर चालू करें साइन-इन करने का तरीका.

एपीएन से जुड़ी सूचनाएं पाना शुरू करें (Apple प्लैटफ़ॉर्म)

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

Firebase Authentication के साथ इस्तेमाल करने से जुड़ी एपीएन की सूचनाएं पाने की सुविधा चालू करने के लिए:

  1. Xcode में, अपने प्रोजेक्ट के लिए पुश नोटिफ़िकेशन चालू करें.
  2. अपने एपीएन सर्टिफ़िकेट को Firebase पर अपलोड करें. अगर आपके पास पहले से कोई एपीएन सर्टिफ़िकेट नहीं है, तो पक्का करें कि आपने Apple Developer सदस्य केंद्र.

    1. Firebase कंसोल में अपने प्रोजेक्ट के अंदर, गियर आइकॉन, चुनें प्रोजेक्ट सेटिंग पर क्लिक करें और फिर क्लाउड से मैसेज टैब.

    2. सर्टिफ़िकेट अपलोड करें चुनें बटन पर क्लिक किया, तो आपका प्रोडक्शन सर्टिफ़िकेट या फिर दोनों का इस्तेमाल करना होगा. कम से कम एक है आवश्यक.

    3. हर सर्टिफ़िकेट के लिए, .p12 फ़ाइल चुनें और पासवर्ड, अगर कोई है. इस सर्टिफ़िकेट का बंडल आईडी पक्का करें आपके ऐप्लिकेशन के बंडल आईडी से मेल खाता हो. चुनें सेव करें पर टैप करें.

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

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

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

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

  2. PhoneAuthProvider::VerifyPhoneNumber को कॉल करें और इसे उपयोगकर्ता के पास पास करें फ़ोन नंबर.
    class PhoneListener : public PhoneAuthProvider::Listener {
     public:
      ~PhoneListener() override {}
    
      void OnVerificationCompleted(PhoneAuthCredential credential) override {
        // Auto-sms-retrieval or instant validation has succeeded (Android only).
        // No need for the user to input the verification code manually.
        // `credential` can be used instead of calling GetCredential().
      }
    
      void OnVerificationFailed(const std::string& error) override {
        // Verification code not sent.
      }
    
      void OnCodeSent(const std::string& verification_id,
                      const PhoneAuthProvider::ForceResendingToken&
                          force_resending_token) override {
        // Verification code successfully sent via SMS.
        // Show the Screen to enter the Code.
        // Developer may want to save that verification_id along with other app states in case
        // the app is terminated before the user gets the SMS verification code.
      }
    };
    
    PhoneListener phone_listener;
    PhoneAuhtOptions options;
    options.timeout_milliseconds = kAutoVerifyTimeOut;
    options.phone_number = phone_number;
    PhoneAuthProvider& phone_provider = PhoneAuthProvider::GetInstance(auth);
    phone_provider->VerifyPhoneNumber(options, &phone_listener);
    जब आप PhoneAuthProvider::VerifyPhoneNumber, Firebase को कॉल करते हैं,
    • (iOS पर) आपके ऐप्लिकेशन को साइलेंट पुश नोटिफ़िकेशन भेजता है,
    • बताए गए को पुष्टि करने वाला कोड शामिल करके एक एसएमएस मैसेज भेजता है फ़ोन नंबर और पुष्टि करने से जुड़े आपके फ़ंक्शन में एक पुष्टि आईडी पास करता है. आपको पुष्टि करने के लिए कोड और आईडी, दोनों की ज़रूरत होगी उपयोगकर्ता को साइन इन करना है.
  3. पुष्टि करने के लिए इस्तेमाल होने वाले आईडी को सेव करें और ऐप्लिकेशन लोड होने पर इसे वापस लाएं. ऐसा करके, यह पक्का किया जा सकता है कि अगर आपका ऐप्लिकेशन उपयोगकर्ता के साइन इन फ़्लो को पूरा करने से पहले ही खत्म कर दिया जाता हो (उदाहरण के लिए, जब वाला मोड चालू हो जाता है).

    पुष्टि करने वाले आईडी को सेव करके रखा जा सकता है. अगर आपको लिख रहे हैं जिसमें C++ फ़्रेमवर्क का इस्तेमाल करके, कानूनी समझौता खत्म करना और उसे वापस लाना. इन इवेंट पर, आपके पास फ़ाइलों को सेव और वापस लाने, साथ ही, पुष्टि करने के लिए आईडी इस्तेमाल किया जा सकता है.

अगर VerifyPhoneNumber को कॉल करने का नतीजा OnCodeSent आता है आपके लिसनर पर कॉल किए जाने पर, आपके पास उपयोगकर्ता को पुष्टि टाइप करने के लिए प्रॉम्प्ट कोड मिल सकता है.

दूसरी ओर, अगर VerifyPhoneNumber को कॉल करने का नतीजा OnVerificationCompleted, इसके बाद अपने-आप पुष्टि हो गई है और अब आपके पास एक PhoneAuthCredential होगा. इसका इस्तेमाल, बताए गए तरीके से किया जा सकेगा देखें.

पुष्टि करने के कोड से उपयोगकर्ता को साइन इन करें

जब उपयोगकर्ता, मैसेज (एसएमएस) से मिला पुष्टि करने वाला कोड आपके ऐप्लिकेशन पर भेज देगा इस मैसेज के लिए, PhoneAuthCredential बनाकर उपयोगकर्ता को साइन इन करने की अनुमति दें पुष्टि करने के लिए कोड और पुष्टि आईडी से ऑब्जेक्ट को भेजना और उसे पास करना Auth::SignInWithCredential तक.

  1. उपयोगकर्ता से पुष्टि करने के लिए कोड पाएं.
  2. पुष्टि करने के कोड से Credential ऑब्जेक्ट बनाएं और पुष्टि करने के लिए आईडी.
    PhoneAuthCredential credential = phone_auth_provider->GetCredential(
        verification_id_.c_str(), verification_code.c_str());
        
  3. Credential ऑब्जेक्ट वाले उपयोगकर्ता को साइन इन करें:
    Future<User> future = auth_->SignInWithCredential(credential);
    future.OnCompletion(
        [](const Future<User*>& result, void*) {
          if (result.error() == kAuthErrorNone) {
            // Successful.
            // User is signed in.
            User user = *result.result();
    
            // This should display the phone number.
            printf("Phone number: %s", user.phone_number().c_str());
    
            // The phone number provider UID is the phone number itself.
            printf("Phone provider uid: %s", user.uid().c_str());
    
            // The phone number providerID is 'phone'
            printf("Phone provider ID: %s", user.provider_id().c_str());
          } else {
            // Error.
            printf("Sign in error: %s", result.error_message().c_str());
          }
        },
        nullptr);

अगले चरण

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

  • अपने ऐप्लिकेशन में, उपयोगकर्ता की बुनियादी प्रोफ़ाइल जानकारी को firebase::auth::User ऑब्जेक्ट:

    firebase::auth::User user = auth->current_user();
    if (user.is_valid()) {
      std::string name = user.display_name();
      std::string email = user.email();
      std::string photo_url = user.photo_url();
      // The user's ID, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server,
      // if you have one. Use firebase::auth::User::Token() instead.
      std::string uid = user.uid();
    }
  • आपके Firebase Realtime Database और Cloud Storage में सुरक्षा के नियम, ये काम किए जा सकते हैं auth वैरिएबल से साइन-इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी पाएं, और इसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.

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

उपयोगकर्ता को साइन आउट करने के लिए पर कॉल करें SignOut():

auth->SignOut();