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

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

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

Firebase से पुष्टि करने की सुविधा का इस्तेमाल करने से पहले, आपको:

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

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

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

  • अपने Unity प्रोजेक्ट में, Firebase Unity SDK (खास तौर पर, FirebaseAuth.unitypackage) जोड़ें.

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

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

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

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

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

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

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.YahooAuthProvider.ProviderId;
    
  2. ज़रूरी नहीं: ऐसे अतिरिक्त कस्टम OAuth पैरामीटर डालें जिन्हें आपको OAuth अनुरोध की मदद से भेजना है.

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Yahoo.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Localize to French.
    providerData.CustomParameters.Add("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 को पास करना ज़रूरी है. ऐसा न करने पर,फ़्लो नहीं हो पाएगा और असली उपयोगकर्ता को एक गड़बड़ी दिखेगी.

    providerData.Scopes = new List<string>();
    
    // Request access to Yahoo Mail API.
    providerData.Scopes.Add("mail-r");
    // This must be preconfigured in the app's API permissions.
    providerData.Scopes.Add("sdct-w");
    

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

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

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

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

<<../_शामिल/_sign_in_with_provider_unity.md>>>

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

    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);
    });
    
  2. 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 प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. साथ ही, इसका इस्तेमाल आपके प्रोजेक्ट के हर ऐप्लिकेशन में किसी उपयोगकर्ता की पहचान करने के लिए किया जा सकता है. भले ही, उपयोगकर्ता ने किसी भी तरह से साइन इन किया हो.

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

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

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

auth.SignOut();