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

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

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

इस्तेमाल करने से पहले Firebase Authentication आपको ये काम करने होंगे:

  • अपना Unity प्रोजेक्ट रजिस्टर करें और इसे Firebase का इस्तेमाल करने के लिए कॉन्फ़िगर करें.

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

    • अगर आपके पास Unity प्रोजेक्ट नहीं है, तो ऐप्लिकेशन का नमूना.

  • Firebase Unity SDK टूल (खास तौर पर, FirebaseAuth.unitypackage) जोड़ें आपका Unity प्रोजेक्ट भी सही है.

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

Firebase.Auth.FirebaseAuth क्लास को ऐक्सेस करें

FirebaseAuth क्लास, सभी एपीआई कॉल के लिए गेटवे होती है. इसे FirebaseAuth.DefaultInstance के ज़रिए ऐक्सेस किया जा सकता है.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

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

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

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

    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 दस्तावेज़. ध्यान दें कि आप Firebase के लिए ज़रूरी पैरामीटर को setCustomParameters(). ये पैरामीटर client_id हैं, response_type, redirect_uri, राज्य, स्कोप, और 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".
    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. सेवा देने वाली कंपनी का डेटा कॉन्फ़िगर होने के बाद, इसका इस्तेमाल करके संघीय OAuthProvider.

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

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

    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.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

    OAuth ऐक्सेस टोकन का इस्तेमाल करके, Microsoft ग्राफ़ API.

    Firebase पुष्टि करने की सुविधा के साथ काम करने वाली दूसरी कंपनियों के उलट, Microsoft ये काम नहीं करता फ़ोटो का यूआरएल उपलब्ध कराएं. इसके बजाय, प्रोफ़ाइल फ़ोटो के लिए बाइनरी डेटा को इनके ज़रिए अनुरोध किया जाएगा 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.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.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.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User reauthenticated successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

Firebase के साथ काम करने वाले दूसरे OAuth प्रोवाइडर से अलग हैं, जैसे कि Google, Facebook, और Twitter, जहां OAuth ऐक्सेस टोकन का इस्तेमाल करके सीधे साइन-इन किया जा सकता है क्रेडेंशियल के आधार पर, Firebase पुष्टि सेवा देने वाली कुछ कंपनियां, जैसे कि Microsoft Microsoft OAuth ऐक्सेस टोकन की ऑडियंस की पुष्टि करने के लिए ऑथराइज़ेशन सर्वर. यह सुरक्षा से जुड़ी एक अहम शर्त है. इससे ऐप्लिकेशन को बिना अनुमति के सार्वजनिक किया जा सकता है और ऐसी वेबसाइटें जिनमें हमलों को फिर से चलाने के लिए Microsoft OAuth ऐक्सेस टोकन दिया गया हो एक प्रोजेक्ट (ऐटकर) का इस्तेमाल किसी दूसरे प्रोजेक्ट (पीड़ित) में साइन इन करने के लिए किया जा सकता है. इसके बजाय, Firebase पुष्टि की मदद से पूरे OAuth फ़्लो को मैनेज किया जा सकता है और OAuth क्लाइंट आईडी और सीक्रेट का इस्तेमाल करके ऑथराइज़ेशन कोड एक्सचेंज करना Firebase कंसोल में कॉन्फ़िगर किया गया है. ऐसा इसलिए है, क्योंकि ऑथराइज़ेशन कोड का इस्तेमाल सिर्फ़ एक बार किया जा सकता है किसी खास क्लाइंट आईडी/सीक्रेट के साथ मिलकर, एक ऑथराइज़ेशन कोड होता है. जो एक प्रोजेक्ट के लिए मिली है उसे दूसरे प्रोजेक्ट के साथ इस्तेमाल नहीं किया जा सकता.

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

अगले चरण

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

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

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

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

auth.SignOut();