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

आप अपने उपयोगकर्ताओं को उनके Apple ID का इस्तेमाल करके Firebase से पुष्टि करने दे सकते हैं. इसके लिए: शुरू से आखिर तक OAuth 2.0 साइन-इन फ़्लो लागू करने के लिए, Firebase SDK टूल का इस्तेमाल किया जाएगा.

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

Apple का इस्तेमाल करके साइन इन करने के लिए, पहले 'Apple से साइन इन करें' सुविधा को कॉन्फ़िगर करें Apple की डेवलपर साइट पर जाएं, तो Apple को अपने Firebase प्रोजेक्ट.

Apple Developer Program में शामिल होना

'Apple से साइन इन करें' सुविधा को, सिर्फ़ Apple Developer के सदस्य कॉन्फ़िगर कर सकते हैं प्रोग्राम में शामिल हैं.

'Apple से साइन इन करें' सुविधा को कॉन्फ़िगर करें

आपके Firebase प्रोजेक्ट में, Apple साइन इन की सुविधा चालू होनी चाहिए और उसे ठीक से कॉन्फ़िगर किया जाना चाहिए. Android और Apple प्लैटफ़ॉर्म के हिसाब से, Apple डेवलपर कॉन्फ़िगरेशन अलग-अलग होता है. कृपया "Apple से साइन इन करने के लिए कॉन्फ़िगर करें" सेक्शन में दिए गए निर्देशों का पालन करें सेक्शन में iOS+ और/या Android गाइड आगे बढ़ें.

साइन इन की सेवा देने वाली कंपनी के तौर पर Apple की सेवाएं चालू करें

  1. Firebase कंसोल में, पुष्टि सेक्शन खोलें. साइन इन करने का तरीका टैब पर, Apple कंपनी को चालू करें.
  2. Apple की साइन इन सेवा देने वाली कंपनी की सेटिंग कॉन्फ़िगर करें:
    1. अगर ऐप्लिकेशन को सिर्फ़ Apple प्लैटफ़ॉर्म पर डिप्लॉय किया जा रहा है, तो सेवा आईडी, Apple टीम आईडी, निजी कुंजी और कुंजी आईडी फ़ील्ड खाली हैं.
    2. Android डिवाइसों पर सहायता पाने के लिए:
      1. अपने Android प्रोजेक्ट में Firebase जोड़ें. होना जब आप Firebase कंसोल.
      2. Firebase कंसोल में, पुष्टि सेक्शन खोलें. इस साइन इन करने का तरीका टैब में, Apple प्रोवाइडर को चालू करें. यह जानकारी दें सेवा आईडी, जिसे आपने पिछले सेक्शन में बनाया था. साथ ही, OAuth कोड में फ़्लो कॉन्फ़िगरेशन सेक्शन में, अपना Apple Team ID और निजी कुंजी बताएं और पासकोड आईडी, जिसे आपने पिछले सेक्शन में बनाया था.

उपयोगकर्ताओं की पहचान छिपाकर, Apple की डेटा से जुड़ी ज़रूरी शर्तों को पूरा करते हैं

'Apple से साइन इन करें' सुविधा की मदद से, उपयोगकर्ताओं को अपने डेटा की पहचान छिपाने का विकल्प मिलता है, साथ ही, साइन इन करते समय उनका ईमेल पता शामिल करें. इस विकल्प को चुनने वाले उपयोगकर्ता privaterelay.appleid.com डोमेन वाले ईमेल पते हैं. टास्क कब शुरू होगा अगर आपने अपने ऐप्लिकेशन में 'Apple से साइन इन करें' सुविधा का इस्तेमाल किया है, तो आपको लागू होने वाली सभी ज़रूरी शर्तों का पालन करना होगा पहचान छिपाने वाले इन Apple के बारे में डेवलपर की नीतियां या Apple की शर्तें आईडी.

इसमें आपसे पहले उपयोगकर्ता की सहमति लेना भी शामिल है पहचान ज़ाहिर करने वाली किसी भी निजी जानकारी को, पहचान छिपाने वाले Apple खाते से जोड़ना आईडी. Firebase से पुष्टि करने की सुविधा का इस्तेमाल करते समय, इसमें ये चीज़ें शामिल हो सकती हैं कार्रवाइयां:

  • किसी ईमेल पते को पहचान छिपाने वाले Apple ID से लिंक करें. इसी तरह, पहचान छिपाने वाले Apple ID से किसी ईमेल पते को लिंक करें.
  • किसी फ़ोन नंबर को पहचान छिपाने वाले Apple ID से लिंक करें. इसी तरह, किसी फ़ोन नंबर को बिना पहचान वाले Apple ID से लिंक करें
  • बिना पहचान वाले सोशल क्रेडेंशियल (Facebook, Google वगैरह) को किसी पहचान छिपाने वाला Apple ID या पहचान छिपाने वाला Apple ID इस्तेमाल करने के लिए भी किया जा सकता है.

ऊपर दी गई सूची पूरी नहीं है. Apple Developer Program देखें अपने डेवलपर खाते के सदस्यता सेक्शन में जाकर, लाइसेंस देने के लिए कानूनी समझौता पक्का करें कि आपका ऐप्लिकेशन Apple की ज़रूरी शर्तों को पूरा करता हो.

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

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

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

'Apple से साइन इन करें' सुविधा, Apple और Android प्लैटफ़ॉर्म के हिसाब से अलग-अलग होती है.

Apple प्लैटफ़ॉर्म पर

  1. Apple साइन इन नॉन्स और टोकन को मैनेज करने के लिए, तीसरे पक्ष का प्लगिन इंस्टॉल करें जनरेशन, जैसे कि Unitys Sign In with Apple Asset Storage पैकेज. आपको जनरेट की गई रैंडम नॉन्स स्ट्रिंग को Firebase कार्रवाइयों में उपयोग करने के लिए इसकी रॉ स्ट्रिंग स्थिति (यानी, इसे नॉन्स का डाइजेस्ट फ़ॉर्म बनाने से पहले SHA256).

  2. Firebase बनाने के लिए, मिलने वाली टोकन स्ट्रिंग और रॉ नॉन्स का इस्तेमाल करें क्रेडेंशियल और Firebase में साइन इन करें.

    Firebase.Auth.Credential credential =
        Firebase.Auth.OAuthProvider.GetCredential("apple.com", appleIdToken, rawNonce, null);
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.AuthResult result = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          result.User.DisplayName, result.User.UserId);
    });

  3. ReauthenticateAsync के साथ भी इसी पैटर्न का इस्तेमाल किया जा सकता है. इसे इसका इस्तेमाल, संवेदनशील कार्रवाइयों के लिए नए क्रेडेंशियल हासिल करने के लिए किया जाता है. हाल ही का लॉगिन. ज़्यादा जानकारी के लिए देखें उपयोगकर्ताओं को मैनेज करें.

  4. Apple प्लैटफ़ॉर्म पर Apple साइन इन से लिंक करते समय, आपको गड़बड़ी का यह मैसेज मिल सकता है कि मौजूदा Firebase खाता पहले से ही Apple खाते से लिंक किया जा चुका है. टास्क कब शुरू होगा ऐसा होता है, तो Firebase.Auth.FirebaseAccountLinkException को फेंक दिया जाएगा नहीं, बल्कि स्टैंडर्ड Firebase.FirebaseException है. इस मामले में अपवाद में एक UserInfo.UpdatedCredential प्रॉपर्टी शामिल है अगर मान्य हो, तो इसका इस्तेमाल Apple से जुड़े उपयोगकर्ता को साइन-इन करने के लिए किया जा सकता है. FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync. अपडेट किए गए क्रेडेंशियल की वजह से, नया Apple साइन-इन टोकन जनरेट करने की ज़रूरत नहीं पड़ती साइन-इन कार्रवाई के लिए नॉन्स के बिना.

    auth.CurrentUser.LinkWithCredentialAsync(
      Firebase.Auth.OAuthProvider.GetCredential("apple.com", idToken, rawNonce, null))
        .ContinueWithOnMainThread( task => {
          if (task.IsCompletedSuccessfully) {
            // Link Success
          } else {
            if (task.Exception != null) {
              foreach (Exception exception in task.Exception.Flatten().InnerExceptions) {
                Firebase.Auth.FirebaseAccountLinkException firebaseEx =
                  exception as Firebase.Auth.FirebaseAccountLinkException;
                if (firebaseEx != null && firebaseEx.UserInfo.UpdatedCredential.IsValid()) {
                  // Attempt to sign in with the updated credential.
                  auth.SignInAndRetrieveDataWithCredentialAsync(firebaseEx.UserInfo.UpdatedCredential).
                    ContinueWithOnMainThread( authResultTask => {
                      // Handle Auth result.
                    });
                } else {
                  Debug.Log("Link with Apple failed:" + firebaseEx );
                }
              } // end for loop
            }
          }
        });

Android पर

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

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

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

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    
    providerData.ProviderId = "apple.com";
    
  2. ज़रूरी नहीं: OAuth 2.0 के डिफ़ॉल्ट स्कोप के अलावा अन्य स्कोप तय करें पुष्टि करने वाली कंपनी से अनुरोध करना है.

    providerData.Scopes = new List<string>();
    providerData.Scopes.Add("email");
    providerData.Scopes.Add("name");
    
  3. ज़रूरी नहीं: अगर आपको Apple की साइन-इन स्क्रीन को किसी भाषा में दिखाना है अंग्रेज़ी के अलावा, locale पैरामीटर सेट करें. ज़्यादा जानकारी के लिए, Apple के दस्तावेज़ों से साइन इन करना का इस्तेमाल करें.

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Localize to French.
    providerData.CustomParameters.Add("language", "fr");
    
  4. सेवा देने वाली कंपनी का डेटा कॉन्फ़िगर होने के बाद, इसका इस्तेमाल करके संघीय OAuthProvider.

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

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

    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);
    });
    
  6. ReauthenticateWithProvider के साथ भी इसी पैटर्न का इस्तेमाल किया जा सकता है. इसे इसका इस्तेमाल, संवेदनशील कार्रवाइयों के लिए नए क्रेडेंशियल हासिल करने के लिए किया जाता है. हाल ही का लॉगिन.

    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);
    });
    
  7. साथ ही, अलग-अलग आइडेंटिटी प्रोवाइडर को लिंक करने के लिए, LinkWithCredentialAsync() का इस्तेमाल किया जा सकता है .

    ध्यान दें कि Apple के लिए यह ज़रूरी है कि आप अपने खाते से पहले, उपयोगकर्ताओं से साफ़ तौर पर सहमति लें अपने Apple खातों को अन्य डेटा से लिंक कर सकती हैं.

    उदाहरण के लिए, किसी Facebook खाते को मौजूदा Firebase खाते से लिंक करने के लिए, उपयोगकर्ता को Facebook में साइन इन करने पर मिला ऐक्सेस टोकन:

    // Initialize a Facebook credential with a Facebook access token.
    
    Firebase.Auth.Credential credential =
        Firebase.Auth.FacebookAuthProvider.GetCredential(facebook_token);
    
    // Assuming the current user is an Apple user linking a Facebook provider.
    user.LinkWithCredentialAsync(credential)
        .ContinueWithOnMainThread( task => {
          if (task.IsCanceled) {
              Debug.LogError("LinkWithCredentialAsync was canceled.");
              return;
          }
          if (task.IsFaulted) {
            Debug.LogError("LinkWithCredentialAsync encountered an error: "
                           + task.Exception);
              return;
          }
    
          Firebase.Auth.AuthResult result = task.Result;
          Firebase.Auth.FirebaseUser user = result.User;
          Debug.LogFormat("User linked successfully: {0} ({1})",
              user.DisplayName, user.UserId);
        });
    

Apple Notes से साइन इन करें

Firebase पुष्टि के साथ काम करने वाली दूसरी कंपनियों के उलट, Apple फ़ोटो का यूआरएल.

साथ ही, जब उपयोगकर्ता अपने ईमेल को Apple के साथ शेयर न करने का विकल्प चुनता है उस उपयोगकर्ता के लिए एक अद्वितीय ईमेल पता (फ़ॉर्म के रूप में) xyz@privaterelay.appleid.com), जिसे यह आपके ऐप्लिकेशन के साथ शेयर करता है. अगर आपको निजी ईमेल रिले सेवा को कॉन्फ़िगर किया है, तो Apple इस पर भेजे गए ईमेल फ़ॉरवर्ड करता है उपयोगकर्ता के असली ईमेल पते पर, पहचान छिपाई गई हो.

Apple, उपयोगकर्ता की जानकारी जैसे कि डिसप्ले नेम को सिर्फ़ उन ऐप्लिकेशन के साथ शेयर करता है: जब कोई उपयोगकर्ता पहली बार साइन इन करता है. आम तौर पर, Firebase आम तौर पर जब कोई उपयोगकर्ता पहली बार Apple में साइन इन करता है. auth.CurrentUser.DisplayName. हालांकि, अगर आपने पहले Apple का इस्तेमाल करके किसी उपयोगकर्ता को बिना साइन इन किए ऐप्लिकेशन में साइन इन किया था अगर आपने Firebase का इस्तेमाल किया है, तो Apple, Firebase को उपयोगकर्ता का डिसप्ले नेम नहीं देगा.

अगले चरण

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

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

अपने Firebase रीयल टाइम डेटाबेस और Cloud Storage के सुरक्षा नियमों में, आपको ऑथराइज़ेशन वैरिएबल से साइन-इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी मिल जाता है. साथ ही, उसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.