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

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

  1. अपने UIApplicationDelegate में FirebaseCore मॉड्यूल के साथ-साथ, उन सभी Firebase मॉड्यूल को इंपोर्ट करें जिनका इस्तेमाल आपका ऐप्लिकेशन डेलीगेट करता है. उदाहरण के लिए, Cloud Firestore और Authentication का इस्तेमाल करने के लिए:
    SwiftUISwiftObjective-C
    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          
    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. अपने ऐप्लिकेशन डेलीगेट के application(_:didFinishLaunchingWithOptions:) तरीके में, FirebaseApp शेयर किया गया इंस्टेंस कॉन्फ़िगर करें:
    SwiftUISwiftObjective-C
    // 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. अगर 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. ऑथेंटिकेशन सर्वर से कस्टम टोकन मिलने के बाद, उपयोगकर्ता को साइन इन कराने के लिए, signInWithCustomToken को टोकन भेजें:
    SwiftObjective-C
    Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in
      // ...
    }
    [[FIRAuth auth] signInWithCustomToken:customToken
                               completion:^(FIRAuthDataResult * _Nullable authResult,
                                            NSError * _Nullable error) {
      // ...
    }];

अगले चरण

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

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

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

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

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

SwiftObjective-C
let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

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