Check out what’s new from Firebase at Google I/O 2022. Learn more

C++ में फायरबेस प्रमाणीकरण के साथ आरंभ करें

आप ईमेल पते और पासवर्ड साइन-इन और Google साइन-इन और Facebook लॉगिन जैसे फ़ेडरेटेड पहचान प्रदाताओं सहित एक या अधिक साइन-इन विधियों का उपयोग करके उपयोगकर्ताओं को अपने ऐप में साइन इन करने की अनुमति देने के लिए फायरबेस प्रमाणीकरण का उपयोग कर सकते हैं। यह ट्यूटोरियल आपको अपने ऐप में ईमेल पता और पासवर्ड साइन-इन जोड़ने का तरीका दिखाते हुए फायरबेस प्रमाणीकरण के साथ आरंभ करता है।

अपने C++ प्रोजेक्ट को Firebase से कनेक्ट करें

इससे पहले कि आप फायरबेस प्रमाणीकरण का उपयोग कर सकें, आपको यह करना होगा:

  • अपना C++ प्रोजेक्ट पंजीकृत करें और इसे Firebase का उपयोग करने के लिए कॉन्फ़िगर करें।

    यदि आपका C++ प्रोजेक्ट पहले से ही Firebase का उपयोग करता है, तो यह पहले से ही पंजीकृत है और Firebase के लिए कॉन्फ़िगर किया गया है।

  • अपने C++ प्रोजेक्ट में Firebase C++ SDK जोड़ें।

ध्यान दें कि आपके C++ प्रोजेक्ट में Firebase जोड़ने से Firebase कंसोल और आपके खुले C++ प्रोजेक्ट दोनों में कार्य शामिल हैं (उदाहरण के लिए, आप कंसोल से Firebase कॉन्फ़िग फ़ाइलें डाउनलोड करते हैं, फिर उन्हें अपने C++ प्रोजेक्ट में ले जाते हैं)।

नए उपयोगकर्ता साइन अप करें

एक फ़ॉर्म बनाएं जो नए उपयोगकर्ताओं को उनके ईमेल पते और पासवर्ड का उपयोग करके आपके ऐप के साथ पंजीकरण करने की अनुमति देता है। जब कोई उपयोगकर्ता फ़ॉर्म को पूरा करता है, तो उपयोगकर्ता द्वारा प्रदान किए गए ईमेल पते और पासवर्ड को मान्य करें, फिर उन्हें CreateUserWithEmailAndPassword विधि में पास करें:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPassword(email, password);

आप या तो CreateUserWithEmailAndPasswordLastResult Future ऑब्जेक्ट पर कॉलबैक दर्ज करके खाता निर्माण संचालन की स्थिति की जांच कर सकते हैं, या, यदि आप किसी प्रकार के आवधिक अपडेट लूप के साथ कोई गेम या ऐप लिख रहे हैं, तो अपडेट लूप में स्थिति को पोल कर सकते हैं।

उदाहरण के लिए, भविष्य का उपयोग करना:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::User*>& result,
       void* user_data) {
      // `user_data` is the same as &my_program_context, below.
      // Note that we can't capture this value in the [] because std::function
      // is not supported by our minimum compiler spec (which is pre C++11).
      MyProgramContext* program_context =
          static_cast<MyProgramContext*>(user_data);

      // Process create user result...
      (void)program_context;
    },
    &my_program_context);

या, पोलिंग का उपयोग करने के लिए, अपने गेम के अपडेट लूप में निम्न उदाहरण जैसा कुछ करें:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

मौजूदा उपयोगकर्ताओं में साइन इन करें

एक ऐसा फॉर्म बनाएं जो मौजूदा उपयोगकर्ताओं को अपने ईमेल पते और पासवर्ड का उपयोग करके साइन इन करने की अनुमति देता है। जब कोई उपयोगकर्ता फ़ॉर्म को पूरा करता है, तो SignInWithEmailAndPassword विधि को कॉल करें:

firebase::Future<firebase::auth::User*> result =
    auth->SignInWithEmailAndPassword(email, password);

साइन-इन ऑपरेशन का परिणाम उसी तरह प्राप्त करें जैसे आपको साइन-अप परिणाम मिला था।

प्रमाणीकरण स्थिति श्रोता सेट करें और खाता डेटा प्राप्त करें

साइन-इन और साइन-आउट इवेंट का जवाब देने के लिए, श्रोता को ग्लोबल ऑथेंटिकेशन ऑब्जेक्ट से अटैच करें। जब भी उपयोगकर्ता की साइन-इन स्थिति बदलती है, तो इस श्रोता को कॉल किया जाता है। क्योंकि ऑथेंटिकेशन ऑब्जेक्ट पूरी तरह से इनिशियलाइज़ होने के बाद ही श्रोता चलता है और किसी भी नेटवर्क कॉल के पूरा होने के बाद, साइन-इन उपयोगकर्ता के बारे में जानकारी प्राप्त करने के लिए यह सबसे अच्छी जगह है।

firebase::auth::AuthStateListener सार वर्ग को लागू करके श्रोता बनाएँ। उदाहरण के लिए, एक श्रोता बनाने के लिए जो उपयोगकर्ता द्वारा सफलतापूर्वक साइन इन करने पर उपयोगकर्ता के बारे में जानकारी प्राप्त करता है:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      // User is signed in
      printf("OnAuthStateChanged: signed_in %s\n", user->uid().c_str());
      const std::string displayName = user->DisplayName();
      const std::string emailAddress = user->Email();
      const std::string photoUrl = user->PhotoUrl();
    } else {
      // User is signed out
      printf("OnAuthStateChanged: signed_out\n");
    }
    // ...
  }
};

श्रोता को firebase::auth::Auth ऑब्जेक्ट की AddAuthStateListener विधि के साथ संलग्न करें:

MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);

अगले कदम

अन्य पहचान प्रदाताओं और अनाम अतिथि खातों के लिए समर्थन जोड़ने का तरीका जानें: