
FirebaseUI, Firebase Authentication SDK पर बनी एक लाइब्रेरी है. यह आपके ऐप्लिकेशन में इस्तेमाल के लिए, ड्रॉप-इन यूज़र इंटरफ़ेस (यूआई) फ़्लो उपलब्ध कराती है. FirebaseUI से ये फ़ायदे मिलते हैं:
- कई प्रोवाइडर: ईमेल/पासवर्ड, ईमेल लिंक, फ़ोन से पुष्टि, Google से साइन इन करें, Facebook से लॉग इन करें, और Twitter से लॉग इन करें के लिए साइन-इन फ़्लो.
- खाते का मैनेजमेंट: खाते के मैनेजमेंट से जुड़े टास्क को मैनेज करने के लिए फ़्लो, जैसे कि खाते बनाना और पासवर्ड रीसेट करना.
- अनाम खाते को लिंक करना: अनाम खातों को पहचान देने वाले प्रोवाइडर से अपने-आप लिंक करने के लिए फ़्लो.
- पसंद के मुताबिक बनाना: अपने ऐप्लिकेशन के हिसाब से, FirebaseUI के लुक को पसंद के मुताबिक बनाएं. इसके अलावा, FirebaseUI ओपन सोर्स होने की वजह से, प्रोजेक्ट को फ़ोर्क किया जा सकता है और अपनी ज़रूरत के हिसाब से कस्टमाइज़ किया जा सकता है.
शुरू करने से पहले
अपने Podfile में FirebaseUI जोड़ें:
pod 'FirebaseUI'अगर चाहें, तो सिर्फ़ Auth कॉम्पोनेंट और उन प्रोवाइडर को जोड़ा जा सकता है जिनका इस्तेमाल करना है:
pod 'FirebaseUI/Auth' pod 'FirebaseUI/Google' pod 'FirebaseUI/Facebook' pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc pod 'FirebaseUI/Phone'अगर आपने अपने ऐप्लिकेशन को अब तक अपने Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल से कनेक्ट करें.
साइन-इन करने के तरीके सेट अप करना
उपयोगकर्ताओं को साइन इन करने के लिए Firebase का इस्तेमाल करने से पहले, आपको उन तरीकों को चालू और कॉन्फ़िगर करना होगा जिनसे साइन इन करने की सुविधा देनी है.
ईमेल पता और पासवर्ड
Firebase कंसोल में, पुष्टि करना सेक्शन खोलें और ईमेल और पासवर्ड से पुष्टि करने की सुविधा चालू करें.
ईमेल लिंक से पुष्टि करना
Firebase कंसोल में, पुष्टि करना सेक्शन खोलें. साइन-इन करने का तरीका टैब पर, ईमेल/पासवर्ड प्रोवाइडर को चालू करें. ध्यान दें कि ईमेल लिंक से साइन-इन करने के लिए, ईमेल या पासवर्ड से साइन-इन करने की सुविधा चालू होनी चाहिए.
इसी सेक्शन में, ईमेल लिंक (बिना पासवर्ड के साइन-इन करना) साइन-इन करने का तरीका चालू करें और सेव करें पर क्लिक करें.
FIREmailLinkAuthSignInMethodके साथFUIEmailAuthइंस्टेंस को शुरू करके, ईमेल लिंक से साइन-इन करने की सुविधा चालू की जा सकती है. इसके अलावा, आपकोhandleCodeInAppको 'सही' पर सेट करके, मान्यFIRActionCodeSettingsऑब्जेक्ट भी देना होगा.Swift
var actionCodeSettings = ActionCodeSettings() actionCodeSettings.url = URL(string: "https://example.firebasestorage.app") 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)Objective-C
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init]; actionCodeSettings.URL = [NSURL URLWithString:@"https://example.firebasestorage.app"]; 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];इसके अलावा, आपको उस यूआरएल को अनुमति वाली सूची में शामिल करना होगा जिसे इनिशियलाइज़र को पास किया जाता है. इसके लिए, Firebase कंसोल में, पुष्टि करना सेक्शन खोलें. साइन-इन करने का तरीका टैब पर, अनुमति वाले डोमेन में यूआरएल जोड़ें.
डीप लिंक मिलने के बाद, आपको इसे पुष्टि करने वाले यूज़र इंटरफ़ेस (यूआई) को पास करना होगा, ताकि इसे मैनेज किया जा सके.
Swift
FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)Objective-C
[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];FirebaseUI-iOS में ईमेल लिंक से साइन-इन करने की सुविधा, FirebaseUI-Android और FirebaseUI-web के साथ काम करती है. इसका मतलब है कि FirebaseUI-Android से फ़्लो शुरू करने वाला कोई उपयोगकर्ता, लिंक खोलकर FirebaseUI-web से साइन-इन कर सकता है. इसके उलट फ़्लो के लिए भी यही बात लागू होती है.
Apple
अपनी एंटाइटलमेंट फ़ाइल में, Apple से साइन इन करने की सुविधा जोड़ें.
Apple से साइन इन करने के लिए कॉन्फ़िगर किए गए OAuth प्रोवाइडर का इंस्टेंस शुरू करें:
Swift
provider = FUIOAuth.appleAuthProvider()
Objective-C
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
- इस ट्यूटोरियल का इस्तेमाल करके, Google से साइन इन करने की सुविधा सेट अप करें
Firebase कंसोल में, पुष्टि करना सेक्शन खोलें और Facebook से साइन इन करने की सुविधा चालू करें. Facebook से साइन-इन करने की सुविधा चालू करने के लिए, आपको अपना Facebook ऐप्लिकेशन आईडी और ऐप्लिकेशन सीक्रेट देना होगा. यह जानकारी, Facebook Developers कंसोल में मिल सकती है.
प्रोजेक्ट सेटिंग > सुविधाएं स्क्रीन से, अपने Xcode प्रोजेक्ट में कीचेन शेयर करने की सुविधा चालू करें.
अपने Xcode प्रोजेक्ट में,
fbFACEBOOK_APP_IDको यूआरएल स्कीम के तौर पर जोड़ें.Info.plistफ़ाइल में, अपना Facebook ऐप्लिकेशन आईडी और डिसप्ले नेम जोड़ें:की मान FacebookAppID FACEBOOK_APP_ID(उदाहरण के लिए,1234567890)FacebookDisplayName आपके ऐप्लिकेशन का नाम Facebook प्रोवाइडर का इंस्टेंस शुरू करें:
Swift
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
Objective-C
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
अगर आपको Facebook Limited Login का इस्तेमाल करना है, तो
useLimitedLoginइंस्टेंस परFUIFacebookAuthप्रॉपर्टी सेट करें.Swift
provider.useLimitedLogin = true
Objective-C
provider.useLimitedLogin = YES;
Firebase कंसोल में, पुष्टि करना सेक्शन खोलें और Twitter से साइन इन करने की सुविधा चालू करें. Twitter से साइन-इन करने की सुविधा चालू करने के लिए, आपको अपना Twitter API कंज्यूमर की और सीक्रेट देना होगा. यह जानकारी, Twitter Application Management कंसोल में मिल सकती है.
Twitter से लॉग इन करने के लिए कॉन्फ़िगर किए गए OAuth प्रोवाइडर का इंस्टेंस शुरू करें:
Swift
provider = FUIOAuth.twitterAuthProvider()
Objective-C
FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
फ़ोन नंबर
Firebase कंसोल में, पुष्टि करना सेक्शन खोलें और फ़ोन नंबर से साइन-इन करने की सुविधा चालू करें.
Firebase को यह पुष्टि करनी होगी कि फ़ोन नंबर से साइन-इन करने के अनुरोध, आपके ऐप्लिकेशन से आ रहे हैं. इसके लिए, APNs सूचनाओं का इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए, ऐप्लिकेशन की पुष्टि करने की सुविधा चालू करना लेख पढ़ें.
Firebase Authentication के साथ इस्तेमाल करने के लिए, APNs सूचनाएं चालू करने के लिए:
Xcode में, पुश नोटिफ़िकेशन चालू करें अपने प्रोजेक्ट के लिए.
Firebase पर, अपना APNs पुष्टि करने वाला पासकोड अपलोड करें. अगर आपके पास पहले से APNs पुष्टि करने वाला पासकोड नहीं है, तो Apple Developer Member Center में जाकर, एक पासकोड बनाएं.
-
Firebase कंसोल में, सेटिंग पर जाएं
सेटिंग > सामान्य. इसके बाद, Cloud Messaging टैब पर क्लिक करें. - **iOS ऐप्लिकेशन कॉन्फ़िगरेशन** में जाकर, **APNs पुष्टि करने वाला पासकोड** में, डेवलपमेंट पुष्टि करने वाला पासकोड, प्रोडक्शन पुष्टि करने वाला पासकोड या दोनों अपलोड करने के लिए, **अपलोड करें** पर क्लिक करें. इनमें से कम से कम एक पासकोड अपलोड करना ज़रूरी है.
- उस जगह पर जाएं जहां आपने पासकोड सेव किया है. इसके बाद, उसे चुनें और खोलें पर क्लिक करें. पासकोड के लिए पासकोड आईडी जोड़ें. यह आईडी, Apple Developer Member Center) में उपलब्ध होता है. इसके बाद, अपलोड करें पर क्लिक करें.
अगर आपके पास पहले से APNs सर्टिफ़िकेट है, तो पासकोड के बजाय सर्टिफ़िकेट अपलोड किया जा सकता है.
-
Firebase कंसोल में, सेटिंग पर जाएं
जब किसी डिवाइस पर APNs सूचनाएं नहीं मिल पाती हैं, तो Firebase, अनुरोधों की पुष्टि करने के लिए reCAPTCHA का इस्तेमाल करता है.
reCAPTCHA से पुष्टि करने की सुविधा चालू करने के लिए, Xcode में यह तरीका अपनाएं:
- अपने प्रोजेक्ट का कॉन्फ़िगरेशन खोलें: बाईं ओर मौजूद ट्री व्यू में, प्रोजेक्ट के नाम पर दो बार क्लिक करें. TARGETS सेक्शन में जाकर, अपना ऐप्लिकेशन चुनें. इसके बाद, जानकारी टैब चुनें और यूआरएल टाइप सेक्शन को बड़ा करें.
- + बटन पर क्लिक करें और अपने एनकोड किए गए ऐप्लिकेशन आईडी को यूआरएल
स्कीम के तौर पर जोड़ें. एनकोड किया गया ऐप्लिकेशन आईडी, Firebase कंसोल के
सामान्य
सेटिंग वाले पेज पर, आपके iOS
ऐप्लिकेशन के सेक्शन में मिल सकता है. अन्य फ़ील्ड खाली छोड़ें.
कॉन्फ़िगरेशन पूरा होने के बाद, यह कुछ इस तरह दिखेगा. हालांकि, इसमें आपके ऐप्लिकेशन के हिसाब से वैल्यू होंगी:
ज़रूरी नहीं: Firebase, मेथड स्विज़लिंग का इस्तेमाल करके, आपके ऐप्लिकेशन का APNs टोकन अपने-आप हासिल करता है. साथ ही, Firebase आपके ऐप्लिकेशन को जो साइलेंट पुश नोटिफ़िकेशन भेजता है उन्हें मैनेज करता है. इसके अलावा, पुष्टि के दौरान, reCAPTCHA की पुष्टि करने वाले पेज से, कस्टम स्कीम रीडायरेक्ट को अपने-आप इंटरसेप्ट करता है.
अगर आपको स्विज़लिंग का इस्तेमाल नहीं करना है, तो अपेंडिक्स: स्विज़लिंग के बिना फ़ोन से साइन-इन करने की सुविधा का इस्तेमाल करना Firebase SDK से पुष्टि करने के दस्तावेज़ों में देखें.
साइन इन करें
FirebaseUI से साइन-इन करने का फ़्लो शुरू करने के लिए, सबसे पहले FirebaseUI को शुरू करें:
Swift
import FirebaseAuthUI
/* ... */
FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self
Objective-C
@import FirebaseAuthUI;
...
[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;
इसके बाद, FirebaseUI को उन तरीकों से साइन-इन करने के लिए कॉन्फ़िगर करें जिनसे साइन-इन करने की सुविधा देनी है:
Swift
import FirebaseAuthUI
import FirebaseFacebookAuthUI
import FirebaseGoogleAuthUI
import FirebaseOAuthUI
import FirebasePhoneAuthUI
let providers: [FUIAuthProvider] = [
FUIGoogleAuth(),
FUIFacebookAuth(),
FUITwitterAuth(),
FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()),
]
self.authUI.providers = providers
Objective-C
@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 से साइन अप करने के फ़्लो के नतीजों के लिए एक हैंडलर लागू करें:
Swift
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
}
Objective-C
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}
आखिर में, FUIAuth से AuthViewController का इंस्टेंस पाएं. इसके बाद, इसे अपने ऐप्लिकेशन के पहले व्यू कंट्रोलर के तौर पर दिखाया जा सकता है या अपने ऐप्लिकेशन के किसी दूसरे व्यू कंट्रोलर से दिखाया जा सकता है.
Swift
साइन-इन करने का तरीका चुनने वाला टूल पाने के लिए:
let authViewController = authUI.authViewController()
अगर सिर्फ़ फ़ोन नंबर से साइन-इन करने की सुविधा का इस्तेमाल किया जाता है, तो इसके बजाय, फ़ोन नंबर से साइन-इन करने का व्यू सीधे दिखाया जा सकता है:
let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)
Objective-C
साइन-इन करने का तरीका चुनने वाला टूल पाने के लिए:
UINavigationController *authViewController = [authUI authViewController];
अगर सिर्फ़ फ़ोन नंबर से साइन-इन करने की सुविधा का इस्तेमाल किया जाता है, तो इसके बजाय, फ़ोन नंबर से साइन-इन करने का व्यू सीधे दिखाया जा सकता है:
FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];
पुष्टि करने का व्यू दिखाने और उपयोगकर्ता के साइन-इन करने के बाद, नतीजा didSignInWithUser:error: तरीके में, FirebaseUI Auth डेलिगेट को मिलता है:
Swift
func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
// handle user and error as necessary
}
Objective-C
- (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 Authentication के साथ-साथ, सोशल आइडेंटिटी प्रोवाइडर से साइन आउट करने के लिए भी आसान तरीके उपलब्ध कराता है:
Swift
authUI.signOut()
Objective-C
[authUI signOut];
कस्टमाइज़ेशन
FirebaseUI के व्यू कंट्रोलर को सबक्लास करके और उन्हें FUIAuth के डेलिगेट तरीकों में तय करके, साइन-इन स्क्रीन को पसंद के मुताबिक बनाया जा सकता है:
Swift
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)
}
Objective-C
- (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];
}
अपने ऐप्लिकेशन की सेवा की शर्तों के यूआरएल को पसंद के मुताबिक बनाया जा सकता है. यह यूआरएल, खाता बनाने की स्क्रीन पर लिंक होता है:
Swift
let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService
Objective-C
authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];
आखिर में, कस्टम बंडल तय करके, अपने उपयोगकर्ताओं को दिखाए जाने वाले मैसेज और प्रॉम्प्ट को पसंद के मुताबिक बनाया जा सकता है:
Swift
authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.
Objective-C
authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.
अगले चरण
- FirebaseUI का इस्तेमाल करने और उसे पसंद के मुताबिक बनाने के बारे में ज़्यादा जानने के लिए, GitHub पर README फ़ाइल देखें.
- अगर आपको FirebaseUI में कोई समस्या मिलती है और उसकी रिपोर्ट करनी है, तो GitHub के इश्यू ट्रैकर का इस्तेमाल करें.