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

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

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

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

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

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

auth->SignOut();