कस्टम ऑथेंटिकेशन सिस्टम और C++ का इस्तेमाल करके, Firebase से पुष्टि करें

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

वेब कंटेनर इंस्टॉल करने से पहले

  1. Firebase को अपने C++ प्रोजेक्ट में जोड़ें.
  2. अपने प्रोजेक्ट की सर्वर कुंजियां पाएं:
    1. अपने प्रोजेक्ट की सेटिंग में, सेवा खाते पेज पर जाएं.
    2. सेवा खाते पेज के Firebase एडमिन SDK सेक्शन में सबसे नीचे, नई निजी कुंजी जनरेट करें पर क्लिक करें.
    3. नए सेवा खाते का सार्वजनिक/निजी कुंजी का जोड़ा, आपके कंप्यूटर पर अपने-आप सेव हो जाता है. इस फ़ाइल को अपने ऑथेंटिकेशन सर्वर पर कॉपी करें.

Firebase की मदद से पुष्टि करें

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::SignInWithCustomToken को कॉल करें.
  1. जब उपयोगकर्ता आपके ऐप्लिकेशन में साइन इन करते हैं, तो पुष्टि करने वाले सर्वर पर अपने साइन-इन क्रेडेंशियल (उदाहरण के लिए, उनका उपयोगकर्ता नाम और पासवर्ड) भेजें. आपका सर्वर, क्रेडेंशियल की जांच करता है और उनके मान्य होने पर कस्टम टोकन दिखाता है.
  2. अपने ऑथेंटिकेशन सर्वर से कस्टम टोकन मिलने के बाद, उसे Auth::SignInWithCustomToken को पास करें, ताकि उपयोगकर्ता में साइन इन किया जा सके:
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInWithCustomToken(custom_token);
    
  3. अगर आपके प्रोग्राम में अपडेट लूप है, जो नियमित तौर पर चलता है (जैसे, एक सेकंड में 30 या 60 बार), तो हर अपडेट के लिए एक बार नतीजे देखने के लिए Auth::SignInWithCustomTokenLastResult की मदद लें:
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInWithCustomTokenLastResult();
    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());
      }
    }
    
    इसके अलावा, अगर आपका प्रोग्राम इवेंट पर आधारित है, तो आने वाले समय में कॉलबैक रजिस्टर किया जा सकता है.

अगले चरण

जब कोई उपयोगकर्ता पहली बार साइन इन करता है, तो एक नया उपयोगकर्ता खाता बनाया जाता है और उपयोगकर्ता के क्रेडेंशियल से लिंक किया जाता है. इन क्रेडेंशियल में उपयोगकर्ता नाम और पासवर्ड, फ़ोन नंबर या पुष्टि करने वाली सेवा की जानकारी शामिल है. यह नया खाता आपके 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 रीयल टाइम डेटाबेस और Cloud Storage के सुरक्षा नियमों में, auth वैरिएबल से साइन-इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी पाया जा सकता है और उसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.

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

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

auth->SignOut();