C++ का उपयोग करके गुमनाम रूप से फायरबेस से प्रमाणित करें

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

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

  1. अपने C++ प्रोजेक्ट में Firebase जोड़ें
  2. यदि आपने अभी तक अपने ऐप को अपने फायरबेस प्रोजेक्ट से कनेक्ट नहीं किया है, तो फायरबेस कंसोल से ऐसा करें।
  3. अनाम प्रमाणीकरण सक्षम करें:
    1. फायरबेस कंसोल में, ऑथ सेक्शन खोलें।
    2. साइन-इन विधियाँ पृष्ठ पर, अनाम साइन-इन विधि सक्षम करें।
    3. वैकल्पिक : यदि आपने अपने प्रोजेक्ट को आइडेंटिटी प्लेटफ़ॉर्म के साथ फायरबेस प्रमाणीकरण में अपग्रेड किया है, तो आप स्वचालित क्लीन-अप सक्षम कर सकते हैं। जब आप इस सेटिंग को सक्षम करते हैं, तो 30 दिनों से अधिक पुराने गुमनाम खाते स्वचालित रूप से हटा दिए जाएंगे। स्वचालित क्लीन-अप सक्षम वाली परियोजनाओं में, अनाम प्रमाणीकरण को अब उपयोग सीमा या बिलिंग कोटा में नहीं गिना जाएगा। स्वचालित सफ़ाई देखें.

गुमनाम रूप से फायरबेस से प्रमाणित करें

जब कोई साइन-आउट उपयोगकर्ता किसी ऐप सुविधा का उपयोग करता है जिसके लिए फायरबेस के साथ प्रमाणीकरण की आवश्यकता होती है, तो निम्न चरणों को पूरा करके उपयोगकर्ता को गुमनाम रूप से साइन इन करें:

Auth क्लास सभी एपीआई कॉल के लिए प्रवेश द्वार है।
  1. प्रामाणिक और ऐप हेडर फ़ाइलें जोड़ें:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. अपने इनिशियलाइज़ेशन कोड में, एक firebase::App क्लास बनाएं।
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. अपने firebase::App के लिए firebase::auth::Auth क्लास प्राप्त करें। App और Auth के बीच वन-टू-वन मैपिंग है।
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • कॉल करें Auth::SignInAnonymously
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
    
  • यदि आपके प्रोग्राम में एक अपडेट लूप है जो नियमित रूप से चलता है (जैसे कि प्रति सेकंड 30 या 60 बार), तो आप प्रति अपडेट एक बार परिणाम की जांच कर सकते हैं Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.user.display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    या, यदि आपका प्रोग्राम इवेंट संचालित है, तो आप पसंद कर सकते हैं Future पर कॉलबैक पंजीकृत करने के लिए।
  • किसी अज्ञात खाते को स्थायी खाते में बदलें

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

    1. जब उपयोगकर्ता साइन अप करता है, तो उपयोगकर्ता के प्रमाणीकरण प्रदाता के लिए साइन-इन प्रवाह पूरा करें, लेकिन इसमें Auth::SignInWith विधियों में से किसी एक को कॉल करना शामिल नहीं है। उदाहरण के लिए, उपयोगकर्ता का Google ID टोकन, Facebook एक्सेस टोकन, या ईमेल पता और पासवर्ड प्राप्त करें।
    2. नए प्रमाणीकरण प्रदाता के लिए auth::Credential प्राप्त करें:

      Google साइन-इन
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      फेसबुक लॉगिन
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      ईमेल-पासवर्ड साइन-इन
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. साइन-इन उपयोगकर्ता की LinkWithCredential विधि में auth::Credential ऑब्जेक्ट पास करें:

      // Link the new credential to the currently active user.
      firebase::auth::User current_user = auth->current_user();
      firebase::Future<firebase::auth::AuthResult> result =
          current_user.LinkWithCredential(credential);
      

    यदि LinkWithCredential पर कॉल सफल होती है, तो उपयोगकर्ता का नया खाता अनाम खाते के फायरबेस डेटा तक पहुंच सकता है।

    स्वचालित सफ़ाई

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

    • स्वचालित सफ़ाई सक्षम करने के बाद बनाए गए किसी भी अनाम खाते को निर्माण के 30 दिनों के बाद किसी भी समय स्वचालित रूप से हटाया जा सकता है।
    • स्वचालित सफ़ाई सक्षम करने के 30 दिन बाद मौजूदा अनाम खाते स्वचालित विलोपन के लिए पात्र होंगे।
    • यदि आप स्वचालित सफ़ाई बंद कर देते हैं, तो हटाए जाने के लिए निर्धारित कोई भी अनाम खाता हटाए जाने के लिए निर्धारित रहेगा।
    • यदि आप किसी अनाम खाते को किसी साइन-इन विधि से लिंक करके "अपग्रेड" करते हैं, तो खाता स्वचालित रूप से हटाया नहीं जाएगा।

    यदि आप यह देखना चाहते हैं कि इस सुविधा को सक्षम करने से पहले कितने उपयोगकर्ता प्रभावित होंगे, और आपने अपने प्रोजेक्ट को पहचान प्लेटफ़ॉर्म के साथ फायरबेस प्रमाणीकरण में अपग्रेड कर लिया है, तो आप क्लाउड लॉगिंग में is_anon द्वारा फ़िल्टर कर सकते हैं।

    अगले कदम

    अब जब उपयोगकर्ता फ़ायरबेस से प्रमाणित कर सकते हैं, तो आप फ़ायरबेस नियमों का उपयोग करके अपने फ़ायरबेस डेटाबेस में डेटा तक उनकी पहुंच को नियंत्रित कर सकते हैं।