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

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

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

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

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

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

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

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

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

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

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

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

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

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

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::AuthResult>& 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::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::AuthResult* auth_result = *result.result();
    printf("Create user succeeded for email %s\n", auth_result.user.email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

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

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

firebase::Future<firebase::auth::AuthResult> 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.is_valid()) {
      // 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);

अगले कदम

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