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

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

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

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

  1. Xcode में, अपना ऐप्लिकेशन प्रोजेक्ट खोलें. इसके बाद, File > Add Packages पर जाएं.
  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. ईमेल/पासवर्ड से साइन-इन करने की सुविधा चालू करें:
    1. Firebase कंसोल में, Auth सेक्शन खोलें.
    2. साइन इन करने का तरीका टैब पर, ईमेल/पासवर्ड से साइन इन करने का तरीका चालू करें. इसके बाद, सेव करें पर क्लिक करें.

पासवर्ड वाला खाता बनाना

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

  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 का इस्तेमाल किया जा रहा है, तो आपको एक ऐप्लिकेशन डेलिगेट बनाना होगा. साथ ही, इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के ज़रिए अपनी App स्ट्रक्चर से जोड़ना होगा. आपको ऐप्लिकेशन के डेलिगेट स्विज़लिंग को भी बंद करना होगा. ज़्यादा जानकारी के लिए, 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 का इस्तेमाल किया जा रहा है, तो आपको एक ऐप्लिकेशन डेलिगेट बनाना होगा. साथ ही, इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के ज़रिए अपनी App स्ट्रक्चर से जोड़ना होगा. आपको ऐप्लिकेशन के डेलिगेट स्विज़लिंग को भी बंद करना होगा. ज़्यादा जानकारी के लिए, 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)

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

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

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

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

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

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

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

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

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

अगले चरण

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

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

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

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

किसी उपयोगकर्ता को साइन आउट करने के लिए, 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;
}

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