कस्टम ऑथेंटिकेशन सिस्टम का इस्तेमाल करके, Apple प्लैटफ़ॉर्म पर Firebase से पुष्टि करें

पुष्टि करने वाले अपने सर्वर में बदलाव करके, Firebase Authentication को कस्टम पुष्टि करने वाले सिस्टम के साथ इंटिग्रेट किया जा सकता है. ऐसा करने पर, उपयोगकर्ता के सफलतापूर्वक साइन इन करने पर, सर्वर से साइन किए गए कस्टम टोकन जनरेट होते हैं. आपका ऐप्लिकेशन यह टोकन लेता है और इसका इस्तेमाल, Firebase से पुष्टि करने के लिए करता है.

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

  1. अगर आपने अब तक Firebase प्रोजेक्ट नहीं बनाया है, तो उसे बनाएं और अपने ऐप्लिकेशन को रजिस्टर करें.
  2. 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 बैकग्राउंड में आपकी डिपेंडेंसी से जुड़ी समस्या को हल करना और उन्हें डाउनलोड करना शुरू कर देगा.
  3. अपने प्रोजेक्ट की सर्वर कुंजियां पाएं:
    1. अपने प्रोजेक्ट की सेटिंग में, सेवा खाते वाले पेज पर जाएं.
    2. _सेवा खाते_ वाले पेज के Firebase Admin SDK सेक्शन में सबसे नीचे, नई निजी कुंजी जनरेट करें पर क्लिक करें.
    3. नए सेवा खाते की सार्वजनिक/निजी कुंजी की जोड़ी, आपके कंप्यूटर पर अपने-आप सेव हो जाती है. इस फ़ाइल को, पुष्टि करने वाले अपने सर्वर पर कॉपी करें.

Firebase से पुष्टि करना

  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. पुष्टि करने वाले अपने सर्वर से कस्टम टोकन मिलने के बाद, उपयोगकर्ता को साइन इन करने के लिए इसे signInWithCustomToken को पास करें:

    Swift

    Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInWithCustomToken:customToken
                               completion:^(FIRAuthDataResult * _Nullable authResult,
                                            NSError * _Nullable error) {
      // ...
    }];

अगले चरण

किसी उपयोगकर्ता के पहली बार साइन इन करने पर, एक नया उपयोगकर्ता खाता बनता है. यह खाता, उन क्रेडेंशियल से लिंक होता है जिनका इस्तेमाल करके उपयोगकर्ता ने साइन इन किया है. जैसे, उपयोगकर्ता नाम और पासवर्ड, फ़ोन नंबर या पुष्टि करने वाले सेवा देने वाले की जानकारी. यह नया खाता, आपके 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;
}

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