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

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

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

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

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

  1. FirebaseCore मॉड्यूल को अपने UIApplicationDelegate में इंपोर्ट करें. साथ ही, ऐसे अन्य 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. अपने ऑथेंटिकेशन सर्वर से कस्टम टोकन मिलने के बाद, उपयोगकर्ता को साइन इन करने के लिए, उसे 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;
}

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