Microsoft और एकता का उपयोग करके प्रमाणित करें

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

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

इससे पहले कि आप फायरबेस प्रमाणीकरण का उपयोग कर सकें, आपको यह करना होगा:

  • अपना एकता प्रोजेक्ट पंजीकृत करें और इसे फायरबेस का उपयोग करने के लिए कॉन्फ़िगर करें।

    • अगर आपका यूनिटी प्रोजेक्ट पहले से ही फायरबेस का उपयोग करता है, तो यह पहले से पंजीकृत है और फायरबेस के लिए कॉन्फ़िगर किया गया है।

    • यदि आपके पास एकता परियोजना नहीं है, तो आप एक नमूना ऐप डाउनलोड कर सकते हैं।

  • अपने Unity प्रोजेक्ट में Firebase Unity SDK (विशेष रूप से, FirebaseAuth.unitypackage ) जोड़ें।

ध्यान दें कि अपने यूनिटी प्रोजेक्ट में फायरबेस जोड़ने से फायरबेस कंसोल और आपके ओपन यूनिटी प्रोजेक्ट दोनों में कार्य शामिल हैं (उदाहरण के लिए, आप कंसोल से फायरबेस कॉन्फिग फाइल डाउनलोड करते हैं, फिर उन्हें अपने यूनिटी प्रोजेक्ट में ले जाते हैं)।

Firebase.Auth.FirebaseAuth वर्ग तक पहुंचें

FirebaseAuth वर्ग सभी API कॉल के लिए प्रवेश द्वार है। इसे FirebaseAuth.DefaultInstance के माध्यम से एक्सेस किया जा सकता है।
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Firebase SDK के साथ साइन-इन प्रवाह को प्रबंधित करें

फायरबेस एसडीके के साथ साइन-इन प्रवाह को संभालने के लिए, इन चरणों का पालन करें:

  1. Microsoft के लिए उपयुक्त प्रदाता आईडी के साथ कॉन्फ़िगर किए गए FederatedOAuthProviderData का एक उदाहरण बनाएँ।

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.MicrosoftAuthProvider.ProviderId;
    
  2. वैकल्पिक : अतिरिक्त कस्टम OAuth पैरामीटर निर्दिष्ट करें जिन्हें आप OAuth अनुरोध के साथ भेजना चाहते हैं।

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Microsoft.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Target specific email with login hint.
    providerData.CustomParameters.Add("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 टैनेंट के मित्रवत डोमेन नाम या टैनेंट के GUID पहचानकर्ता का उपयोग किया जा सकता है। यह कस्टम पैरामीटर ऑब्जेक्ट में "टेनेंट" फ़ील्ड निर्दिष्ट करके किया जा सकता है।

    // 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".
    providerData.CustomParameters.Add("tenant", "TENANT_ID");
    
  3. वैकल्पिक : मूल प्रोफ़ाइल से परे अतिरिक्त OAuth 2.0 स्कोप निर्दिष्ट करें जिसका आप प्रमाणीकरण प्रदाता से अनुरोध करना चाहते हैं।

    providerData.Scopes = new List<string>();
    providerData.Scopes.Add("mail.read");
    providerData.Scopes.Add("calendars.read");
    

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

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

    // Construct a FederatedOAuthProvider for use in Auth methods.
    Firebase.Auth.FederatedOAuthProvider provider = new Firebase.Auth.FederatedOAuthProvider();
    provider.SetProviderData(providerData);
    
  5. प्रमाणीकरण प्रदाता ऑब्जेक्ट का उपयोग करके फायरबेस के साथ प्रमाणित करें। ध्यान दें कि अन्य FirebaseAuth संचालन के विपरीत, यह एक वेब दृश्य को पॉप अप करके आपके UI को नियंत्रित करेगा जिसमें उपयोगकर्ता अपनी साख दर्ज कर सकता है।

    साइन इन प्रवाह प्रारंभ करने के लिए, SignInWithProviderAsync पर कॉल करें:

    auth.SignInWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("SignInWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("SignInWithProviderAsync encountered an error: " +
              task.Exception);
            return;
        }
    
        Firebase.Auth.SignInResult signInResult = task.Result;
        Firebase.Auth.FirebaseUser user = signInResult.User;
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

    OAuth पहुंच टोकन का उपयोग करके, आप Microsoft ग्राफ़ API को कॉल कर सकते हैं।

    फायरबेस ऑथ द्वारा समर्थित अन्य प्रदाताओं के विपरीत, माइक्रोसॉफ्ट एक फोटो यूआरएल प्रदान नहीं करता है और इसके बजाय, प्रोफाइल फोटो के लिए बाइनरी डेटा को माइक्रोसॉफ्ट ग्राफ एपीआई के माध्यम से अनुरोध किया जाना है।

  6. जबकि उपरोक्त उदाहरण साइन-इन प्रवाह पर ध्यान केंद्रित करते हैं, आपके पास Microsoft Azure Active Directory प्रदाता को LinkWithProviderAsync का उपयोग करके किसी मौजूदा उपयोगकर्ता से लिंक करने की क्षमता भी है। उदाहरण के लिए, आप एक से अधिक प्रदाताओं को एक ही उपयोगकर्ता से लिंक कर सकते हैं जिससे वे दोनों में से किसी के साथ साइन इन कर सकें।

    user.LinkWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("LinkWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("LinkWithProviderAsync encountered an error: "
              + task.Exception);
            return;
        }
    
        Firebase.Auth.SignInResult signInResult = task.Result;
        Firebase.Auth.FirebaseUser user = signInResult.User;
        Debug.LogFormat("User linked successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    
  7. उसी पैटर्न का उपयोग ReauthenticateWithProviderAsync के साथ किया जा सकता है जिसका उपयोग संवेदनशील संचालन के लिए नए क्रेडेंशियल्स को पुनः प्राप्त करने के लिए किया जा सकता है जिसके लिए हाल ही में लॉगिन की आवश्यकता होती है।

    user.ReauthenticateWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("ReauthenticateWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError(
            "ReauthenticateWithProviderAsync encountered an error: " +
                task.Exception);
            return;
        }
    
        Firebase.Auth.SignInResult signInResult = task.Result;
        Firebase.Auth.FirebaseUser user = signInResult.User;
        Debug.LogFormat("User reauthenticated successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

अगले कदम

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

  • अपने ऐप्लिकेशन में, आप उपयोगकर्ता की बुनियादी प्रोफ़ाइल जानकारी Firebase.Auth.FirebaseUser ऑब्जेक्ट से प्राप्त कर सकते हैं:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // 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 User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • अपने फायरबेस रीयलटाइम डेटाबेस और क्लाउड स्टोरेज सुरक्षा नियमों में, आप auth चर से साइन-इन किए गए उपयोगकर्ता की अद्वितीय उपयोगकर्ता आईडी प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।

आप प्रमाणीकरण प्रदाता क्रेडेंशियल्स को मौजूदा उपयोगकर्ता खाते से लिंक करके एकाधिक प्रमाणीकरण प्रदाताओं का उपयोग करके उपयोगकर्ताओं को अपने ऐप में साइन इन करने की अनुमति दे सकते हैं।

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

auth.SignOut();