Yahoo और C++ का इस्तेमाल करके पुष्टि करें

Yahoo जैसे OAuth प्रोवाइडर का इस्तेमाल करके, अपने उपयोगकर्ताओं को Firebase की मदद से पुष्टि करने की अनुमति दी जा सकती है. इसके लिए, Firebase SDK टूल का इस्तेमाल करके, वेब पर आधारित सामान्य OAuth लॉगिन को अपने ऐप्लिकेशन में इंटिग्रेट किया जा सकता है. ऐसा करके, एंड-टू-एंड साइन-इन फ़्लो को पूरा किया जा सकता है. इस फ़्लो के लिए, फ़ोन पर आधारित Firebase SDK टूल का इस्तेमाल करना ज़रूरी होता है. इसलिए, यह सिर्फ़ Android और Apple प्लैटफ़ॉर्म पर काम करता है.

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

  1. अपने C++ प्रोजेक्ट में Firebase जोड़ें.
  2. Firebase कंसोल में, पुष्टि करें सेक्शन खोलें.
  3. साइन इन करने का तरीका टैब पर, Yahoo की सेवा देने वाली कंपनी को चालू करें.
  4. सेवा देने वाली कंपनी के डेवलपर कंसोल से, Client-ID और क्लाइंट सीक्रेट जोड़ें:
    1. Yahoo OAuth क्लाइंट को रजिस्टर करने के लिए, Yahoo के साथ वेब ऐप्लिकेशन को रजिस्टर करने से जुड़े Yahoo डेवलपर के दस्तावेज़ में दिए गए निर्देशों का पालन करें.

      यह पक्का करें कि आपने दो Open Connect API की अनुमतियां चुनी हों: profile और email.

    2. इन कंपनियों के साथ ऐप्लिकेशन रजिस्टर करते समय, अपने प्रोजेक्ट के लिए *.firebaseapp.com डोमेन को, ऐप्लिकेशन के लिए रीडायरेक्ट डोमेन के तौर पर रजिस्टर करें.
  5. सेव करें पर क्लिक करें.

firebase::auth::Auth क्लास को ऐक्सेस करें

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);
    

Firebase SDK टूल की मदद से साइन-इन की प्रोसेस को मैनेज करना

Firebase SDK टूल की मदद से साइन इन फ़्लो मैनेज करने के लिए, यह तरीका अपनाएं:

  1. Yahoo के लिए सही प्रोवाइडर आईडी के साथ कॉन्फ़िगर किए गए FederatedOAuthProviderData का इंस्टेंस बनाएं.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::YahooAuthProvider::kProviderId);
    
  2. ज़रूरी नहीं: ऐसे अतिरिक्त कस्टम OAuth पैरामीटर डालें जिन्हें आपको OAuth अनुरोध की मदद से भेजना है.

    // Prompt user to re-authenticate to Yahoo.
    provider_data.custom_parameters["prompt"] = "login";
    
    // Localize to French.
    provider_data.custom_parameters["language"] = "fr";
    

    Yahoo पर इस्तेमाल किए जा सकने वाले पैरामीटर के बारे में जानने के लिए, Yahoo OAuth दस्तावेज़ देखें. ध्यान दें कि custom_parameters() के साथ, Firebase के लिए ज़रूरी पैरामीटर पास नहीं किए जा सकते. ये पैरामीटर हैं: client_id, redirect_uri, response_type, scope, और state.

  3. ज़रूरी नहीं: profile और email के अलावा, OAuth 2.0 के ऐसे अन्य दायरे बताएं जिनका अनुरोध आपको पुष्टि करने वाली कंपनी से करना है. अगर आपके ऐप्लिकेशन को Yahoo API के निजी उपयोगकर्ता डेटा का ऐक्सेस चाहिए, तो आपकोYahoo डेवलपर कंसोल में एपीआई अनुमतियों के तहत Yahoo API के लिए अनुमतियों का अनुरोध करना होगा. अनुरोध किए गए OAuth के दायरे, ऐप्लिकेशन की एपीआई अनुमतियों में पहले से कॉन्फ़िगर किए गए दायरे से पूरी तरह मेल खाने चाहिए. उदाहरण के लिए, अगर उपयोगकर्ता के संपर्कों को पढ़ने/लिखने का ऐक्सेस मांगा गया है और ऐप्लिकेशन की एपीआई अनुमतियों में पहले से कॉन्फ़िगर किया गया है, तो सिर्फ़ पढ़ने के लिए OAuth के दायरे sdct-r के बजाय, sdct-w को पास करना ज़रूरी है. ऐसा न करने पर,फ़्लो नहीं हो पाएगा और असली उपयोगकर्ता को एक गड़बड़ी दिखेगी.

    // Request access to Yahoo Mail API.
    provider_data.scopes.push_back("mail-r");
    // This must be preconfigured in the app's API permissions.
    provider_data.scopes.push_back("sdct-w");
    

    ज़्यादा जानने के लिए, Yahoo के दायरे से जुड़ा दस्तावेज़ देखें.

  4. सेवा देने वाली कंपनी का डेटा कॉन्फ़िगर हो जाने के बाद, उसका इस्तेमाल FederatedOAuthProvider बनाने के लिए करें.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. पुष्टि करने वाले ऑब्जेक्ट का इस्तेमाल करके, Firebase से पुष्टि करें. ध्यान दें कि FirebaseAuth की दूसरी कार्रवाइयों के उलट, यह वेब व्यू को पॉप अप करके आपके यूज़र इंटरफ़ेस (यूआई) को कंट्रोल करेगा. इसमें उपयोगकर्ता अपने क्रेडेंशियल डाल सकता है.

    साइन इन फ़्लो शुरू करने के लिए, SignInWithProvider को कॉल करें:

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

    इसके बाद, आपका ऐप्लिकेशन इंतज़ार कर सकता है या आने वाले समय में कॉलबैक के लिए रजिस्टर कर सकता है.

  6. ऊपर दिए गए उदाहरण, साइन-इन फ़्लो पर फ़ोकस करते हैं. हालांकि, LinkWithProvider का इस्तेमाल करके, Yahoo प्रोवाइडर को किसी मौजूदा उपयोगकर्ता से लिंक किया जा सकता है. उदाहरण के लिए, एक ही उपयोगकर्ता को कई प्रोवाइडर से लिंक किया जा सकता है, ताकि वे दोनों में से किसी एक का इस्तेमाल करके साइन इन कर सकें.

    firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);
    
  7. यही पैटर्न, ReauthenticateWithProvider के साथ भी इस्तेमाल किया जा सकता है. इसका इस्तेमाल, संवेदनशील कार्रवाइयों के लिए नए क्रेडेंशियल हासिल करने के लिए किया जा सकता है, जिनमें हाल ही में लॉगिन करने की ज़रूरत होती है.

    firebase::Future<firebase::auth::AuthResult> result =
      user.ReauthenticateWithProvider(provider_data);
    

    इसके बाद, आपका ऐप्लिकेशन इंतज़ार कर सकता है या आने वाले समय में कॉलबैक रजिस्टर कर सकता है.

अगले चरण

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