Google 致力于为黑人社区推动种族平等。查看具体举措

FirebaseUI के साथ अपने iOS ऐप में आसानी से साइन-इन जोड़ें

FirebaseUI , Firebase प्रमाणीकरण SDK के शीर्ष पर निर्मित एक लाइब्रेरी है जो आपके ऐप में उपयोग के लिए ड्रॉप-इन UI प्रवाह प्रदान करती है। FirebaseUI निम्नलिखित लाभ प्रदान करता है:

  • एकाधिक प्रदाता : ईमेल/पासवर्ड, ईमेल लिंक, फोन प्रमाणीकरण, Google साइन-इन, फेसबुक लॉगिन और ट्विटर लॉगिन के लिए साइन-इन प्रवाह।
  • खाता प्रबंधन : खाता प्रबंधन कार्यों को संभालने के लिए प्रवाह, जैसे खाता निर्माण और पासवर्ड रीसेट।
  • अनाम खाता लिंकिंग : अनाम खातों को पहचान प्रदाताओं से स्वचालित रूप से लिंक करने के लिए प्रवाहित होता है।
  • अनुकूलन योग्य : अपने ऐप से मेल खाने के लिए फायरबेसयूआई के रूप को अनुकूलित करें। साथ ही, क्योंकि फायरबेसयूआई ओपन सोर्स है, आप प्रोजेक्ट को फोर्क कर सकते हैं और इसे अपनी आवश्यकताओं के लिए बिल्कुल अनुकूलित कर सकते हैं।

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

  1. अपने Apple प्रोजेक्ट में Firebase जोड़ें .

  2. अपने पॉडफाइल में FirebaseUI जोड़ें:

    pod 'FirebaseUI'
    

    यदि आप चाहें, तो आप केवल प्रामाणिक घटक और वे प्रदाता जोड़ सकते हैं जिनका आप उपयोग करना चाहते हैं:

    pod 'FirebaseUI/Auth'
    
    pod 'FirebaseUI/Google'
    pod 'FirebaseUI/Facebook'
    pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc
    pod 'FirebaseUI/Phone'
    
  3. अगर आपने अभी तक अपने ऐप को अपने Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो इसे Firebase कंसोल से करें।

साइन-इन विधियाँ सेट करें

इससे पहले कि आप उपयोगकर्ताओं में साइन इन करने के लिए फ़ायरबेस का उपयोग कर सकें, आपको उन साइन-इन विधियों को सक्षम और कॉन्फ़िगर करना होगा जिनका आप समर्थन करना चाहते हैं।

ईमेल पता और पासवर्ड

फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और ईमेल और पासवर्ड प्रमाणीकरण सक्षम करें।

  1. फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें। साइन इन विधि टैब पर, ईमेल/पासवर्ड प्रदाता को सक्षम करें। ध्यान दें कि ईमेल लिंक साइन-इन का उपयोग करने के लिए ईमेल/पासवर्ड साइन-इन सक्षम होना चाहिए।

  2. उसी अनुभाग में, ईमेल लिंक (पासवर्ड रहित साइन-इन) साइन-इन विधि सक्षम करें और सहेजें पर क्लिक करें।

  3. आप FIREmailLinkAuthSignInMethod FUIEmailAuth को इनिशियलाइज़ करके ईमेल लिंक साइन इन को सक्षम कर सकते हैं। आपको एक मान्य FIRActionCodeSettings ऑब्जेक्ट भी प्रदान करना होगा जिसमें handleCodeInApp सही पर सेट हो।

तीव्र

var actionCodeSettings = ActionCodeSettings()
actionCodeSettings.url = URL(string: "https://example.appspot.com")
actionCodeSettings.handleCodeInApp = true
actionCodeSettings.setAndroidPackageName("com.firebase.example", installIfNotAvailable: false, minimumVersion: "12")

let provider = FUIEmailAuth(authUI: FUIAuth.defaultAuthUI()!,
                            signInMethod: FIREmailLinkAuthSignInMethod,
                            forceSameDevice: false,
                            allowNewEmailAccounts: true,
                            actionCodeSetting: actionCodeSettings)

उद्देश्य सी

FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
actionCodeSettings.URL = [NSURL URLWithString:@"https://example.appspot.com"];
actionCodeSettings.handleCodeInApp = YES;
[actionCodeSettings setAndroidPackageName:@"com.firebase.example"
                    installIfNotAvailable:NO
                           minimumVersion:@"12"];

id<FUIAuthProvider> provider = [[FUIEmailAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]
                                                       signInMethod:FIREmailLinkAuthSignInMethod
                                                    forceSameDevice:NO
                                              allowNewEmailAccounts:YES
                                                  actionCodeSetting:actionCodeSettings];
  1. इसके अतिरिक्त, आपको उस URL को श्वेतसूची में डालना होगा जिसे आप प्रारंभकर्ता को देते हैं। आप फायरबेस कंसोल में ऐसा कर सकते हैं, प्रमाणीकरण अनुभाग खोलें। साइन इन विधि टैब पर, अधिकृत डोमेन के अंतर्गत URL जोड़ें।

  2. एक बार जब आप डीप लिंक को पकड़ लेते हैं, तो आपको इसे ऑथ यूआई को पास करना होगा ताकि इसे संभाला जा सके।

तीव्र

FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)

उद्देश्य सी

[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
  1. फायरबेसयूआई-आईओएस में ईमेल लिंक साइन-इन फायरबेसयूआई-एंड्रॉइड और फायरबेसयूआई-वेब के साथ संगत है जहां एक उपयोगकर्ता फायरबेसयूआई-एंड्रॉइड से प्रवाह शुरू कर सकता है और फायरबेसयूआई-वेब के साथ साइन-इन पूरा कर सकता है। विपरीत प्रवाह के लिए भी यही सच है।

सेब

  1. शुरू करने से पहले का पालन करें और ऐप्पल गाइड के साथ फायरबेस साइन इन में ऐप्पल अनामित डेटा आवश्यकताओं का पालन करें।

  2. अपनी एंटाइटेलमेंट फ़ाइल में Apple क्षमता के साथ साइन इन जोड़ें।

  3. Apple के साथ साइन इन करने के लिए कॉन्फ़िगर किया गया OAuth प्रदाता इंस्टेंस प्रारंभ करें:

    तीव्र

    provider = FUIOAuth.appleAuthProvider()
    

    उद्देश्य सी

    FUIOAuth *provider = [FUIOAuth appleAuthProvider];
    

गूगल

  1. फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और Google साइन-इन सक्षम करें।

  2. अपने एक्सकोड प्रोजेक्ट में यूआरएल स्कीम के रूप में अपनी उलट क्लाइंट आईडी जोड़ें। आप यह मान GoogleService-Info.plist फ़ाइल में पा सकते हैं।

फेसबुक

  1. फेसबुक के आरंभिक पृष्ठ का अनुसरण करके फेसबुक लॉगिन एसडीके सेट करें।

  2. फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और फेसबुक को सक्षम करें। Facebook साइन-इन सक्षम करने के लिए, आपको अपना Facebook ऐप आईडी और ऐप सीक्रेट प्रदान करना होगा, जिसे आप Facebook Developers कंसोल में प्राप्त कर सकते हैं।

  3. प्रोजेक्ट सेटिंग्स > क्षमता स्क्रीन से अपने Xcode प्रोजेक्ट में किचेन शेयरिंग सक्षम करें।

  4. अपने Xcode प्रोजेक्ट में fb FACEBOOK_APP_ID को URL स्कीम के रूप में जोड़ें।

  5. Info.plist फ़ाइल में अपना Facebook ऐप आईडी और प्रदर्शन नाम जोड़ें:

    चाभी मूल्य
    फेसबुकएपआईडी FACEBOOK_APP_ID (उदाहरण के लिए, 1234567890 )
    फेसबुकडिस्प्लेनाम आपके ऐप का नाम
  6. Facebook प्रदाता इंस्टेंस प्रारंभ करें:

    तीव्र

    provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
    

    उद्देश्य सी

    FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
    

  7. अगर आप Facebook Limited Login का उपयोग करना चाहते हैं, तो FUIFacebookAuth उदाहरण पर useLimitedLogin प्रॉपर्टी सेट करें।

    तीव्र

    provider.useLimitedLogin = true
    

    उद्देश्य सी

    provider.useLimitedLogin = YES;
    

ट्विटर

  1. फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और ट्विटर को सक्षम करें। Twitter साइन-इन सक्षम करने के लिए, आपको अपनी Twitter API उपभोक्ता कुंजी और रहस्य प्रदान करना होगा, जिसे आप Twitter एप्लिकेशन प्रबंधन कंसोल में प्राप्त कर सकते हैं।

  2. Twitter लॉगिन के लिए कॉन्फ़िगर किया गया OAuth प्रदाता इंस्टेंस प्रारंभ करें:

    तीव्र

    provider = FUIOAuth.twitterAuthProvider()
    

    उद्देश्य सी

    FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
    

फ़ोन नंबर

  1. फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और फ़ोन नंबर साइन-इन सक्षम करें।

  2. Firebase यह सत्यापित करने में सक्षम होना चाहिए कि आपके ऐप्लिकेशन से फ़ोन नंबर साइन-इन अनुरोध आ रहे हैं। इसे पूरा करने के तरीकों में से एक एपीएन अधिसूचनाओं के माध्यम से है। विवरण के लिए ऐप सत्यापन सक्षम करें देखें।

    फायरबेस प्रमाणीकरण के साथ उपयोग के लिए एपीएन अधिसूचनाओं को सक्षम करने के लिए:

    1. एक्सकोड में, अपने प्रोजेक्ट के लिए पुश नोटिफिकेशन सक्षम करें।

    2. Firebase पर अपनी APN प्रमाणीकरण कुंजी अपलोड करें. यदि आपके पास पहले से APNs प्रमाणीकरण कुंजी नहीं है, तो Apple डेवलपर सदस्य केंद्र में एक बनाना सुनिश्चित करें।

      1. फायरबेस कंसोल में अपने प्रोजेक्ट के अंदर, गियर आइकन चुनें, प्रोजेक्ट सेटिंग्स चुनें और फिर क्लाउड मैसेजिंग टैब चुनें।

      2. आईओएस ऐप कॉन्फ़िगरेशन के तहत एपीएन प्रमाणीकरण कुंजी में, अपलोड बटन पर क्लिक करें।

      3. उस स्थान पर ब्राउज़ करें जहां आपने अपनी कुंजी सहेजी थी, उसे चुनें और खोलें क्लिक करें. कुंजी के लिए कुंजी आईडी जोड़ें ( Apple डेवलपर सदस्य केंद्र में उपलब्ध) और अपलोड पर क्लिक करें।

      यदि आपके पास पहले से APN प्रमाणपत्र है, तो आप इसके बजाय प्रमाणपत्र अपलोड कर सकते हैं।

  3. जब किसी डिवाइस पर APN की सूचनाएं प्राप्त नहीं की जा सकतीं, तो Firebase अनुरोधों को सत्यापित करने के लिए reCAPTCHA का उपयोग करता है।

    रीकैप्चा सत्यापन को सक्षम करने के लिए, यदि आपने पहले से अपनी उलट क्लाइंट आईडी को यूआरएल योजना के रूप में नहीं जोड़ा है (उदाहरण के लिए, Google साइन-इन सक्षम करने के लिए), तो अपने एक्सकोड प्रोजेक्ट में ऐसा करें। आप यह मान GoogleService-Info.plist फ़ाइल में पा सकते हैं।

  4. वैकल्पिक : Firebase आपके ऐप के APN टोकन को स्वचालित रूप से प्राप्त करने के लिए, Firebase द्वारा आपके ऐप को भेजे जाने वाले साइलेंट पुश नोटिफिकेशन को संभालने के लिए, और सत्यापन के दौरान reCAPTCHA सत्यापन पृष्ठ से कस्टम स्कीम रीडायरेक्ट को स्वचालित रूप से इंटरसेप्ट करने के लिए स्विज़लिंग विधि का उपयोग करता है।

    यदि आप स्विज़लिंग का उपयोग नहीं करना पसंद करते हैं, तो परिशिष्ट देखें: फायरबेस एसडीके प्रमाणीकरण दस्तावेज़ों में स्विज़लिंग के बिना फ़ोन साइन-इन का उपयोग करना

साइन इन करें

FirebaseUI साइन इन फ़्लो शुरू करने के लिए, पहले FirebaseUI को इनिशियलाइज़ करें:

तीव्र

import FirebaseAuthUI

/* ... */

FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self

उद्देश्य सी

@import FirebaseAuthUI;

...

[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;

फिर, आप जिस साइन-इन विधियों का समर्थन करना चाहते हैं, उसका उपयोग करने के लिए FirebaseUI को कॉन्फ़िगर करें:

तीव्र

import FirebaseAuthUI
import FirebaseFacebookAuthUI
import FirebaseGoogleAuthUI
import FirebaseOAuthUI
import FirebasePhoneAuthUI

let providers: [FUIAuthProvider] = [
  FUIGoogleAuth(),
  FUIFacebookAuth(),
  FUITwitterAuth(),
  FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()),
]
self.authUI.providers = providers

उद्देश्य सी

@import FirebaseAuthUI;
@import FirebaseFacebookAuthUI;
@import FirebaseGoogleAuthUI;
@import FirebaseOAuthUI;
@import FirebasePhoneAuthUI;

...

NSArray<id<FUIAuthProvider>> *providers = @[
  [[FUIGoogleAuth alloc] init],
  [[FUIFacebookAuth alloc] init],
  [[FUITwitterAuth alloc] init],
  [[FUIPhoneAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]]
];
_authUI.providers = providers;

यदि आपने Google या Facebook साइन-इन सक्षम किया है, तो Google और Facebook साइन-अप प्रवाह के परिणाम के लिए एक हैंडलर लागू करें:

तीव्र

func application(_ app: UIApplication, open url: URL,
    options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
  let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String?
  if FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: sourceApplication) ?? false {
    return true
  }
  // other URL handling goes here.
  return false
}

उद्देश्य सी

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary *)options {
  NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
  return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}

अंत में, AuthViewController से FUIAuth का एक उदाहरण प्राप्त करें। फिर आप या तो इसे अपने ऐप के पहले व्यू कंट्रोलर के रूप में प्रस्तुत कर सकते हैं या इसे अपने ऐप में किसी अन्य व्यू कंट्रोलर से प्रस्तुत कर सकते हैं।

तीव्र

साइन-इन विधि चयनकर्ता प्राप्त करने के लिए:

let authViewController = authUI.authViewController()

यदि आप केवल फ़ोन नंबर साइन-इन का उपयोग करते हैं, तो आप इसके बजाय सीधे फ़ोन नंबर साइन-इन दृश्य प्रदर्शित कर सकते हैं:

let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)

उद्देश्य सी

साइन-इन विधि चयनकर्ता प्राप्त करने के लिए:

UINavigationController *authViewController = [authUI authViewController];

यदि आप केवल फ़ोन नंबर साइन-इन का उपयोग करते हैं, तो आप इसके बजाय सीधे फ़ोन नंबर साइन-इन दृश्य प्रदर्शित कर सकते हैं:

FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];

प्रमाणीकरण दृश्य प्रस्तुत करने और उपयोगकर्ता साइन इन करने के बाद, परिणाम FirebaseUI प्रामाणिक प्रतिनिधि को didSignInWithUser:error: विधि में वापस कर दिया जाता है:

तीव्र

func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
  // handle user and error as necessary
}

उद्देश्य सी

   - (void)authUI:(FUIAuth *)authUI
didSignInWithUser:(nullable FIRUser *)user
            error:(nullable NSError *)error {
  // Implement this method to handle signed in user or error if any.
}

साइन आउट

FirebaseUI, Firebase प्रमाणीकरण के साथ-साथ सभी सामाजिक पहचान प्रदाताओं से साइन आउट करने के लिए सुविधाजनक तरीके प्रदान करता है:

तीव्र

authUI.signOut()

उद्देश्य सी

[authUI signOut];

अनुकूलन

आप FirebaseUI के दृश्य नियंत्रकों को उपवर्गित करके और उन्हें FUIAuth के प्रतिनिधि विधियों में निर्दिष्ट करके साइन-इन स्क्रीन को अनुकूलित कर सकते हैं:

तीव्र

func authPickerViewController(forAuthUI authUI: FUIAuth) -> FUIAuthPickerViewController {
  return FUICustomAuthPickerViewController(nibName: "FUICustomAuthPickerViewController",
                                           bundle: Bundle.main,
                                           authUI: authUI)
}

func emailEntryViewController(forAuthUI authUI: FUIAuth) -> FUIEmailEntryViewController {
  return FUICustomEmailEntryViewController(nibName: "FUICustomEmailEntryViewController",
                                           bundle: Bundle.main,
                                           authUI: authUI)
}

func passwordRecoveryViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordRecoveryViewController {
  return FUICustomPasswordRecoveryViewController(nibName: "FUICustomPasswordRecoveryViewController",
                                                 bundle: Bundle.main,
                                                 authUI: authUI,
                                                 email: email)
}

func passwordSignInViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignInViewController {
  return FUICustomPasswordSignInViewController(nibName: "FUICustomPasswordSignInViewController",
                                               bundle: Bundle.main,
                                               authUI: authUI,
                                               email: email)
}

func passwordSignUpViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignUpViewController {
  return FUICustomPasswordSignUpViewController(nibName: "FUICustomPasswordSignUpViewController",
                                               bundle: Bundle.main,
                                               authUI: authUI,
                                               email: email)
}

func passwordVerificationViewController(forAuthUI authUI: FUIAuth, email: String, newCredential: AuthCredential) -> FUIPasswordVerificationViewController {
  return FUICustomPasswordVerificationViewController(nibName: "FUICustomPasswordVerificationViewController",
                                                     bundle: Bundle.main,
                                                     authUI: authUI,
                                                     email: email,
                                                     newCredential: newCredential)
}

उद्देश्य सी

- (FUIAuthPickerViewController *)authPickerViewControllerForAuthUI:(FUIAuth *)authUI {
  return [[FUICustomAuthPickerViewController alloc] initWithNibName:@"FUICustomAuthPickerViewController"
                                                             bundle:[NSBundle mainBundle]
                                                             authUI:authUI];
}

- (FUIEmailEntryViewController *)emailEntryViewControllerForAuthUI:(FUIAuth *)authUI {
  return [[FUICustomEmailEntryViewController alloc] initWithNibName:@"FUICustomEmailEntryViewController"
                                                             bundle:[NSBundle mainBundle]
                                                             authUI:authUI];

}

- (FUIPasswordSignInViewController *)passwordSignInViewControllerForAuthUI:(FUIAuth *)authUI
                                                                     email:(NSString *)email {
  return [[FUICustomPasswordSignInViewController alloc] initWithNibName:@"FUICustomPasswordSignInViewController"
                                                                 bundle:[NSBundle mainBundle]
                                                                 authUI:authUI
                                                                  email:email];

}

- (FUIPasswordSignUpViewController *)passwordSignUpViewControllerForAuthUI:(FUIAuth *)authUI
                                                                     email:(NSString *)email {
  return [[FUICustomPasswordSignUpViewController alloc] initWithNibName:@"FUICustomPasswordSignUpViewController"
                                                                 bundle:[NSBundle mainBundle]
                                                                 authUI:authUI
                                                                  email:email];

}

- (FUIPasswordRecoveryViewController *)passwordRecoveryViewControllerForAuthUI:(FUIAuth *)authUI
                                                                         email:(NSString *)email {
  return [[FUICustomPasswordRecoveryViewController alloc] initWithNibName:@"FUICustomPasswordRecoveryViewController"
                                                                   bundle:[NSBundle mainBundle]
                                                                   authUI:authUI
                                                                    email:email];

}

- (FUIPasswordVerificationViewController *)passwordVerificationViewControllerForAuthUI:(FUIAuth *)authUI
                                                                                 email:(NSString *)email
                                                                         newCredential:(FIRAuthCredential *)newCredential {
  return [[FUICustomPasswordVerificationViewController alloc] initWithNibName:@"FUICustomPasswordVerificationViewController"
                                                                       bundle:[NSBundle mainBundle]
                                                                       authUI:authUI
                                                                        email:email
                                                                newCredential:newCredential];
}

आप URL को अपने ऐप की सेवा की शर्तों के अनुसार कस्टमाइज़ कर सकते हैं, जो खाता निर्माण स्क्रीन पर लिंक है:

तीव्र

let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService

उद्देश्य सी

authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];

अंत में, आप कस्टम बंडल निर्दिष्ट करके अपने उपयोगकर्ताओं को दिखाए गए संदेशों और संकेतों को कस्टमाइज़ कर सकते हैं:

तीव्र

authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.

उद्देश्य सी

authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.

अगले कदम

  • FirebaseUI के उपयोग और अनुकूलन के बारे में अधिक जानकारी के लिए, GitHub पर README फ़ाइल देखें।
  • यदि आप FirebaseUI में पाते हैं और जारी करते हैं और इसकी रिपोर्ट करना चाहते हैं, तो GitHub समस्या ट्रैकर का उपयोग करें।