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

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

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

  1. अपने C++ प्रोजेक्ट में Firebase जोड़ें.
  2. Firebase कंसोल में, पुष्टि करें सेक्शन खोलें.
  3. साइन इन करने का तरीका टैब पर, Microsoft प्रोवाइडर को चालू करें.
  4. सेवा देने वाली कंपनी के डेवलपर कंसोल से, Client-ID और क्लाइंट सीक्रेट जोड़ें:
    1. Microsoft OAuth क्लाइंट को रजिस्टर करने के लिए, क्विकस्टार्ट: Azure Active Directory v2.0 एंडपॉइंट के साथ ऐप्लिकेशन को रजिस्टर करना में दिए गए निर्देशों का पालन करें. ध्यान दें कि इस एंडपॉइंट पर, Microsoft के निजी खातों और Azure Active Directory खातों से साइन इन करने की सुविधा मिलती है. Azure Active Directory v2.0 के बारे में ज़्यादा जानें.
    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. ऐसे FederatedOAuthProviderData का इंस्टेंस बनाएं जिसे Microsoft के लिए सही प्रोवाइडर आईडी के साथ कॉन्फ़िगर किया गया हो.

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

    // Prompt user to re-authenticate to Microsoft.
    provider_data.custom_parameters["prompt"] = "login";
    
    // Target specific email with login hint.
    provider_data.custom_parameters["login_hint"] =
        "user@firstadd.onmicrosoft.com";
    

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

    सिर्फ़ किसी खास Azure AD टेनेंट के उपयोगकर्ताओं को ऐप्लिकेशन में साइन इन करने की अनुमति देने के लिए, Azure AD टेनेंट के फ़्रेंडली डोमेन नेम या किरायेदार के जीयूआईडी आइडेंटिफ़ायर का इस्तेमाल किया जा सकता है. ऐसा करने के लिए, कस्टम पैरामीटर ऑब्जेक्ट में "टेनेंट" फ़ील्ड तय करें.

    // Optional "tenant" parameter in case you are using an Azure AD tenant.
    // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
    // or "common" for tenant-independent tokens.
    // The default value is "common".
    provider_data.custom_parameters["tenant"] ="TENANT_ID";
    
  3. ज़रूरी नहीं: बेसिक प्रोफ़ाइल के अलावा, OAuth 2.0 के अन्य दायरे तय करें. इसके लिए, आपको पुष्टि करने वाली कंपनी से अनुरोध करना है.

    provider_data.scopes.push_back("mail.read");
    provider_data.scopes.push_back("calendars.read");
    

    ज़्यादा जानने के लिए, Microsoft की अनुमतियां और सहमति से जुड़े दस्तावेज़ देखें.

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

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

    OAuth ऐक्सेस टोकन का इस्तेमाल करके, Microsoft ग्राफ़ API को कॉल किया जा सकता है.

    Firebase Auth के साथ काम करने वाली दूसरी कंपनियों से अलग, Microsoft कोई फ़ोटो यूआरएल नहीं देता है. इसके बजाय, प्रोफ़ाइल फ़ोटो के लिए बाइनरी डेटा के लिए Microsoft ग्राफ़ API के ज़रिए अनुरोध करना पड़ता है.

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

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