Apple प्लैटफ़ॉर्म पर पासवर्ड-आधारित खातों का इस्तेमाल करके Firebase से पुष्टि करें

आप अपने उपयोगकर्ताओं को उनके ईमेल पते और पासवर्ड का उपयोग करके Firebase Authentication के साथ प्रमाणित करने और अपने ऐप के पासवर्ड-आधारित खातों को प्रबंधित करने के लिए का उपयोग कर सकते हैं.

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

Firebase की डिपेंडेंसी इंस्टॉल और मैनेज करने के लिए, Swift Package Manager का इस्तेमाल करें.

  1. Xcode में, अपने ऐप्लिकेशन का प्रोजेक्ट खोलें. इसके बाद, फ़ाइल > पैकेज जोड़ें पर जाएं.
  2. प्रॉम्प्ट मिलने पर, Firebase Apple प्लैटफ़ॉर्म SDK टूल का रिपॉज़िटरी जोड़ें:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Firebase Authentication लाइब्रेरी चुनें.
  5. अपने टारगेट की बिल्ड सेटिंग के Other Linker Flags सेक्शन में, -ObjC फ़्लैग जोड़ें.
  6. इसके बाद, Xcode बैकग्राउंड में आपकी डिपेंडेंसी से जुड़ी समस्या को हल करना और उन्हें डाउनलोड करना शुरू कर देगा.

इसके बाद, कॉन्फ़िगरेशन के कुछ चरण पूरे करें:

  1. अगर आपने अब तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल से ऐसा करें.
  2. अपने Firebase प्रोजेक्ट के लिए, ईमेल/पासवर्ड को साइन-इन करने की सुविधा देने वाले प्लैटफ़ॉर्म के तौर पर चालू करें:
    1. Firebase कंसोल में, सुरक्षा > पुष्टि करना पर जाएं.
    2. साइन-इन करने का तरीका टैब में, ईमेल/पासवर्ड को साइन-इन करने की सुविधा देने वाले प्लैटफ़ॉर्म के तौर पर चालू करें.
    3. सेव करें पर क्लिक करें.

पासवर्ड-आधारित खाता बनाना

पासवर्ड की मदद से नया उपयोगकर्ता खाता बनाने के लिए, अपने ऐप्लिकेशन की साइन-इन गतिविधि में यह तरीका अपनाएं:

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

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. अपने ऐप्लिकेशन डेलिगेट के application(_:didFinishLaunchingWithOptions:) तरीके में, FirebaseApp शेयर किया गया इंस्टेंस कॉन्फ़िगर करें:

    SwiftUI

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

    Swift

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

    Objective-C

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

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. जब कोई नया उपयोगकर्ता, आपके ऐप्लिकेशन के साइन-अप फ़ॉर्म का इस्तेमाल करके साइन अप करता है, तो नए खाते की पुष्टि करने के उन सभी चरणों को पूरा करें जिनकी ज़रूरत आपके ऐप्लिकेशन को होती है. जैसे, यह पुष्टि करना कि नए खाते का पासवर्ड सही तरीके से टाइप किया गया है और वह आपकी जटिलता से जुड़ी ज़रूरी शर्तों को पूरा करता है.
  5. `createUser` में नए उपयोगकर्ता का ईमेल पता और पासवर्ड डालकर, एक नया खाता बनाएं.

    Swift

    Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
      // ...
    }

    Objective-C

    [[FIRAuth auth] createUserWithEmail:email
                               password:password
                             completion:^(FIRAuthDataResult * _Nullable authResult,
                                          NSError * _Nullable error) {
      // ...
    }];
    अगर नया खाता सफलतापूर्वक बन जाता है, तो उपयोगकर्ता साइन इन हो जाता है. साथ ही, आपको कॉलबैक का तरीका में पास किए गए नतीजे के ऑब्जेक्ट से, उपयोगकर्ता के खाते में मौजूद डेटा मिल सकता है.

ईमेल पते और पासवर्ड की मदद से किसी उपयोगकर्ता को साइन इन करना

पासवर्ड की मदद से किसी उपयोगकर्ता को साइन इन करने का तरीका, नया खाता बनाने के तरीके जैसा ही होता है. अपने ऐप्लिकेशन की साइन-इन गतिविधि में, यह तरीका अपनाएं:

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

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. अपने ऐप्लिकेशन डेलिगेट के application(_:didFinishLaunchingWithOptions:) तरीके में, FirebaseApp शेयर किया गया इंस्टेंस कॉन्फ़िगर करें:

    SwiftUI

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

    Swift

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

    Objective-C

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

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. जब कोई उपयोगकर्ता आपके ऐप्लिकेशन में साइन इन करता है, तो उपयोगकर्ता का ईमेल पता और पासवर्ड signIn में डालें.

    Swift

    Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
      guard let strongSelf = self else { return }
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInWithEmail:self->_emailField.text
                           password:self->_passwordField.text
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
      // ...
    }];
    अगर उपयोगकर्ता सफलतापूर्वक साइन इन कर लेता है, तो आपको कॉलबैक तरीके में पास किए गए नतीजे के ऑब्जेक्ट से, उपयोगकर्ता के खाते का डेटा मिल सकता है.

सुझाव: पासवर्ड नीति सेट करना

पासवर्ड की जटिलता से जुड़ी ज़रूरी शर्तें लागू करके, खाते की सुरक्षा को बेहतर बनाया जा सकता है.

अपने प्रोजेक्ट के लिए पासवर्ड नीति कॉन्फ़िगर करने के लिए, पासवर्ड नीति सेक्शन खोलें, जो सुरक्षा > पुष्टि करना > सेटिंग टैब में है Firebase कंसोल:

पुष्टि करने की सेटिंग

Firebase Authentication पासवर्ड नीतियों में, पासवर्ड से जुड़ी ये ज़रूरी शर्तें लागू की जा सकती हैं:

  • लोअरकेस वर्ण ज़रूरी है

  • अपरकेस वर्ण ज़रूरी है

  • संख्या वाला वर्ण ज़रूरी है

  • बिना अक्षर और अंक वाला वर्ण ज़रूरी है

    बिना अक्षर और अंक वाले वर्ण की ज़रूरी शर्त को ये वर्ण पूरा करते हैं: ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~

  • पासवर्ड की कम से कम लंबाई (6 से 30 वर्ण; डिफ़ॉल्ट रूप से 6)

  • पासवर्ड की ज़्यादा से ज़्यादा लंबाई (ज़्यादा से ज़्यादा 4096 वर्ण)

पासवर्ड नीति को दो मोड में लागू किया जा सकता है:

  • ज़रूरी है: जब तक उपयोगकर्ता ऐसा पासवर्ड अपडेट नहीं करता जो आपकी नीति के मुताबिक हो, तब तक साइन अप करने की कोशिशें नाकाम होती रहेंगी.

  • सूचना दें: उपयोगकर्ताओं को, नीति के मुताबिक न होने वाले पासवर्ड से साइन अप करने की अनुमति दी जाती है. इस मोड का इस्तेमाल करते समय, आपको यह देखना चाहिए कि उपयोगकर्ता का पासवर्ड, क्लाइंट साइड पर नीति के मुताबिक है या नहीं. अगर पासवर्ड नीति के मुताबिक नहीं है, तो उपयोगकर्ता को किसी तरह से अपना पासवर्ड अपडेट करने के लिए कहा जाना चाहिए.

नए उपयोगकर्ताओं को हमेशा ऐसा पासवर्ड चुनना होगा जो आपकी नीति के मुताबिक हो.

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

सुझाव: ईमेल की गिनती से सुरक्षा की सुविधा चालू करना

कुछ Firebase Authentication तरीके जिनमें ईमेल पते को पैरामीटर के तौर पर लिया जाता है, खास गड़बड़ियां दिखाते हैं. ऐसा तब होता है, जब ईमेल पता रजिस्टर होना चाहिए, लेकिन रजिस्टर नहीं होता. उदाहरण के लिए, ईमेल पते और पासवर्ड की मदद से साइन इन करते समय. इसके अलावा, ऐसा तब भी होता है, जब ईमेल पता इस्तेमाल नहीं किया जाना चाहिए, लेकिन रजिस्टर होता है. उदाहरण के लिए, किसी उपयोगकर्ता का ईमेल पता बदलते समय. इससे उपयोगकर्ताओं को खास समाधान सुझाने में मदद मिल सकती है. हालांकि, इसका गलत इस्तेमाल करके, धोखाधड़ी करने वाले लोग आपके उपयोगकर्ताओं के रजिस्टर किए गए ईमेल पतों का पता लगा सकते हैं.

इस जोखिम को कम करने के लिए, हमारा सुझाव है कि आप ईमेल की गिनती से सुरक्षा की सुविधा चालू करें Google Cloud gcloud टूल का इस्तेमाल करके, अपने प्रोजेक्ट के लिए. ध्यान दें कि इस सुविधा को चालू करने से, Firebase Authentication's की गड़बड़ी की रिपोर्टिंग के तरीके में बदलाव होता है. इसलिए, पक्का करें कि आपका ऐप्लिकेशन ज़्यादा खास गड़बड़ियों पर निर्भर न हो.

अगले चरण

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

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

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

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

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

Swift

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}

Objective-C

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

पुष्टि करने से जुड़ी सभी गड़बड़ियों के लिए, गड़बड़ी मैनेज करने का कोड भी जोड़ा जा सकता है. गड़बड़ियां मैनेज करना लेख देखें.