Apple प्लेटफ़ॉर्म पर गुमनाम रूप से Firebase से प्रमाणित करें

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

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

  1. फायरबेस निर्भरता को स्थापित और प्रबंधित करने के लिए स्विफ्ट पैकेज मैनेजर का उपयोग करें।

    1. Xcode में, अपना ऐप प्रोजेक्ट खुला होने पर, फ़ाइल > पैकेज जोड़ें पर नेविगेट करें।
    2. संकेत मिलने पर, Firebase Apple प्लेटफ़ॉर्म SDK रिपॉजिटरी जोड़ें:
    3.   https://github.com/firebase/firebase-ios-sdk.git
    4. फायरबेस प्रमाणीकरण लाइब्रेरी चुनें।
    5. अपने लक्ष्य की बिल्ड सेटिंग्स के अन्य लिंकर फ़्लैग अनुभाग में -ObjC फ़्लैग जोड़ें।
    6. समाप्त होने पर, Xcode स्वचालित रूप से पृष्ठभूमि में आपकी निर्भरता को हल करना और डाउनलोड करना शुरू कर देगा।
  2. यदि आपने अभी तक अपने ऐप को अपने फायरबेस प्रोजेक्ट से कनेक्ट नहीं किया है, तो फायरबेस कंसोल से ऐसा करें।
  3. अनाम प्रमाणीकरण सक्षम करें:
    1. फायरबेस कंसोल में, ऑथ सेक्शन खोलें।
    2. साइन-इन विधियाँ पृष्ठ पर, अनाम साइन-इन विधि सक्षम करें।
    3. वैकल्पिक : यदि आपने अपने प्रोजेक्ट को आइडेंटिटी प्लेटफ़ॉर्म के साथ फायरबेस प्रमाणीकरण में अपग्रेड किया है, तो आप स्वचालित क्लीन-अप सक्षम कर सकते हैं। जब आप इस सेटिंग को सक्षम करते हैं, तो 30 दिनों से अधिक पुराने गुमनाम खाते स्वचालित रूप से हटा दिए जाएंगे। स्वचालित क्लीन-अप सक्षम वाली परियोजनाओं में, अनाम प्रमाणीकरण को अब उपयोग सीमा या बिलिंग कोटा में नहीं गिना जाएगा। स्वचालित सफ़ाई देखें.

गुमनाम रूप से फायरबेस से प्रमाणित करें

जब कोई साइन-आउट उपयोगकर्ता किसी ऐप सुविधा का उपयोग करता है जिसके लिए फायरबेस के साथ प्रमाणीकरण की आवश्यकता होती है, तो निम्न चरणों को पूरा करके उपयोगकर्ता को गुमनाम रूप से साइन इन करें:

  1. अपने UIApplicationDelegate में FirebaseCore मॉड्यूल को आयात करें, साथ ही आपके ऐप प्रतिनिधि द्वारा उपयोग किए जाने वाले किसी भी अन्य Firebase मॉड्यूल को आयात करें। उदाहरण के लिए, क्लाउड फायरस्टोर और प्रमाणीकरण का उपयोग करने के लिए:

    स्विफ्टयूआई

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    तीव्र

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    उद्देश्य सी

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. अपने ऐप प्रतिनिधि के application(_:didFinishLaunchingWithOptions:) विधि में FirebaseApp साझा किए गए इंस्टेंस को कॉन्फ़िगर करें:

    स्विफ्टयूआई

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    तीव्र

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    उद्देश्य सी

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. यदि आप स्विफ्टयूआई का उपयोग कर रहे हैं, तो आपको एक एप्लिकेशन प्रतिनिधि बनाना होगा और इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के माध्यम से अपने App स्ट्रक्चर में संलग्न करना होगा। आपको ऐप डेलीगेट स्विज़लिंग को भी अक्षम करना होगा। अधिक जानकारी के लिए स्विफ्टयूआई निर्देश देखें।

    स्विफ्टयूआई

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. signInAnonymouslyWithCompletion: विधि:

    तीव्र

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    

    उद्देश्य सी

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  5. यदि signInAnonymouslyWithCompletion: विधि बिना किसी त्रुटि के पूरी हो जाती है, तो आप FIRAuthDataResult ऑब्जेक्ट से अज्ञात उपयोगकर्ता का खाता डेटा प्राप्त कर सकते हैं:

    तीव्र

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    

    उद्देश्य सी

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;
    

किसी अज्ञात खाते को स्थायी खाते में बदलें

जब कोई अनाम उपयोगकर्ता आपके ऐप पर साइन अप करता है, तो आप उन्हें अपने नए खाते के साथ अपना काम जारी रखने की अनुमति देना चाह सकते हैं - उदाहरण के लिए, आप साइन अप करने से पहले उपयोगकर्ता द्वारा अपने शॉपिंग कार्ट में जोड़े गए आइटम को अपने नए खाते में उपलब्ध कराना चाह सकते हैं। खाते की शॉपिंग कार्ट. ऐसा करने के लिए, निम्नलिखित चरणों को पूरा करें:

  1. जब उपयोगकर्ता साइन अप करता है, तो उपयोगकर्ता के प्रमाणीकरण प्रदाता के लिए साइन-इन प्रवाह को पूरा करें, लेकिन इसमें FIRAuth.signInWith विधियों में से किसी एक को कॉल करना शामिल नहीं है। उदाहरण के लिए, उपयोगकर्ता का Google ID टोकन, Facebook एक्सेस टोकन, या ईमेल पता और पासवर्ड प्राप्त करें।
  2. नए प्रमाणीकरण प्रदाता के लिए FIRAuthCredential प्राप्त करें:

    गूगल साइन-इन
    तीव्र
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    
    उद्देश्य सी
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString
                                     accessToken:result.user.accessToken.tokenString];
    
    फेसबुक लॉग इन
    तीव्र
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    उद्देश्य सी
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    ईमेल-पासवर्ड साइन-इन
    तीव्र
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    उद्देश्य सी
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. FIRAuthCredential ऑब्जेक्ट को साइन-इन उपयोगकर्ता के linkWithCredential:completion: विधि में पास करें:

    तीव्र
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    
    उद्देश्य सी
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];
    

यदि linkWithCredential:completion: पर कॉल सफल होती है, तो उपयोगकर्ता का नया खाता अनाम खाते के फायरबेस डेटा तक पहुंच सकता है।

स्वचालित सफ़ाई

यदि आपने अपने प्रोजेक्ट को आइडेंटिटी प्लेटफ़ॉर्म के साथ फ़ायरबेस प्रमाणीकरण में अपग्रेड किया है, तो आप फ़ायरबेस कंसोल में स्वचालित क्लीन-अप सक्षम कर सकते हैं। जब आप इस सुविधा को सक्षम करते हैं तो आप फायरबेस को 30 दिनों से अधिक पुराने गुमनाम खातों को स्वचालित रूप से हटाने की अनुमति देते हैं। स्वचालित सफ़ाई सक्षम परियोजनाओं में, अनाम प्रमाणीकरण को उपयोग सीमा या बिलिंग कोटा में नहीं गिना जाएगा।

  • स्वचालित सफ़ाई सक्षम करने के बाद बनाए गए किसी भी अनाम खाते को निर्माण के 30 दिनों के बाद किसी भी समय स्वचालित रूप से हटाया जा सकता है।
  • स्वचालित सफ़ाई सक्षम करने के 30 दिन बाद मौजूदा अनाम खाते स्वचालित विलोपन के लिए पात्र होंगे।
  • यदि आप स्वचालित सफ़ाई बंद कर देते हैं, तो हटाए जाने के लिए निर्धारित कोई भी अनाम खाता हटाए जाने के लिए निर्धारित रहेगा।
  • यदि आप किसी अनाम खाते को किसी साइन-इन विधि से लिंक करके "अपग्रेड" करते हैं, तो खाता स्वचालित रूप से हटाया नहीं जाएगा।

यदि आप यह देखना चाहते हैं कि इस सुविधा को सक्षम करने से पहले कितने उपयोगकर्ता प्रभावित होंगे, और आपने अपने प्रोजेक्ट को पहचान प्लेटफ़ॉर्म के साथ फायरबेस प्रमाणीकरण में अपग्रेड कर लिया है, तो आप क्लाउड लॉगिंग में is_anon द्वारा फ़िल्टर कर सकते हैं।

अगले कदम

अब जब उपयोगकर्ता फ़ायरबेस से प्रमाणित कर सकते हैं, तो आप फ़ायरबेस नियमों का उपयोग करके अपने फ़ायरबेस डेटाबेस में डेटा तक उनकी पहुंच को नियंत्रित कर सकते हैं।