FirebaseUI , Firebase प्रमाणीकरण SDK के शीर्ष पर बनी एक लाइब्रेरी है जो आपके ऐप में उपयोग के लिए ड्रॉप-इन UI प्रवाह प्रदान करती है। FirebaseUI निम्नलिखित लाभ प्रदान करता है:
- एकाधिक प्रदाता : ईमेल/पासवर्ड, ईमेल लिंक, फ़ोन प्रमाणीकरण, Google साइन-इन, Facebook लॉगिन और Twitter लॉगिन के लिए साइन-इन प्रवाह।
- खाता प्रबंधन : खाता प्रबंधन कार्यों को संभालने के लिए प्रवाह, जैसे खाता निर्माण और पासवर्ड रीसेट करना।
- बेनामी खाता लिंकिंग : अज्ञात खातों को पहचान प्रदाताओं से स्वचालित रूप से लिंक करने के लिए प्रवाह।
- अनुकूलन योग्य : अपने ऐप से मिलान करने के लिए FirebaseUI के रूप को अनुकूलित करें। इसके अलावा, क्योंकि FirebaseUI ओपन सोर्स है, आप प्रोजेक्ट को फोर्क कर सकते हैं और इसे अपनी आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।
शुरू करने से पहले
अपने पॉडफाइल में 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'
अगर आपने अभी तक अपने ऐप को अपने फायरबेस प्रोजेक्ट से कनेक्ट नहीं किया है, तो फायरबेस कंसोल से ऐसा करें।
साइन-इन विधियों को सेट करें
इससे पहले कि आप उपयोगकर्ताओं को साइन इन करने के लिए Firebase का उपयोग कर सकें, आपको उन साइन-इन विधियों को सक्षम और कॉन्फ़िगर करना होगा जिनका आप समर्थन करना चाहते हैं।
ईमेल पता और पासवर्ड
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और ईमेल और पासवर्ड प्रमाणीकरण सक्षम करें।
ईमेल लिंक प्रमाणीकरण
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें। साइन इन विधि टैब पर, ईमेल/पासवर्ड प्रदाता को सक्षम करें। ध्यान दें कि ईमेल लिंक साइन-इन का उपयोग करने के लिए ईमेल/पासवर्ड साइन-इन सक्षम होना चाहिए।
उसी अनुभाग में, ईमेल लिंक (पासवर्ड रहित साइन-इन) साइन-इन विधि सक्षम करें और सहेजें पर क्लिक करें।
आप
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];
इसके अतिरिक्त, आपको उस URL को श्वेतसूची में डालना होगा जिसे आप प्रारंभकर्ता को पास करते हैं। आप फायरबेस कंसोल में ऐसा कर सकते हैं, प्रमाणीकरण अनुभाग खोलें। साइन इन विधि टैब पर, अधिकृत डोमेन के अंतर्गत URL जोड़ें।
एक बार जब आप डीप लिंक पकड़ लेते हैं, तो आपको इसे प्राधिकरण यूआई में पास करना होगा ताकि इसे संभाला जा सके।
तीव्र
FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)
उद्देश्य सी
[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
- फायरबेसयूआई-आईओएस में ईमेल लिंक साइन-इन फायरबेसयूआई-एंड्रॉइड और फायरबेसयूआई-वेब के साथ संगत है जहां फायरबेसयूआई-एंड्रॉइड से प्रवाह शुरू करने वाला एक उपयोगकर्ता लिंक खोल सकता है और फायरबेसयूआई-वेब के साथ साइन-इन पूरा कर सकता है। विपरीत प्रवाह के लिए भी यही सच है।
सेब
Apple गाइड के साथ Firebase साइन इन में शुरू करने से पहले और Apple अज्ञात डेटा आवश्यकताएँ अनुभागों का पालन करें ।
अपनी एंटाइटेलमेंट फ़ाइल में Apple क्षमता के साथ साइन इन करें जोड़ें।
Apple के साथ साइन इन करने के लिए कॉन्फ़िगर किए गए OAuth प्रदाता इंस्टेंस को प्रारंभ करें:
तीव्र
provider = FUIOAuth.appleAuthProvider()
उद्देश्य सी
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
गूगल
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और Google साइन-इन को सक्षम करें।
अपने प्रोजेक्ट की
GoogleService-Info.plist
फ़ाइल की एक नई कॉपी डाउनलोड करें और इसे अपने Xcode प्रोजेक्ट में कॉपी करें। किसी भी मौजूदा संस्करण को नए के साथ अधिलेखित करें। ( अपने iOS प्रोजेक्ट में Firebase जोड़ें देखें।)अपने एक्सकोड प्रोजेक्ट में यूआरएल योजना के रूप में अपनी उलटी क्लाइंट आईडी जोड़ें। आप यह मान
GoogleService-Info.plist
फ़ाइल में प्राप्त कर सकते हैं।फेसबुक
फेसबुक के गेटिंग स्टार्टिंग पेज को फॉलो करके फेसबुक लॉगिन एसडीके सेट करें।
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और Facebook को सक्षम करें। Facebook साइन-इन को सक्षम करने के लिए, आपको अपना Facebook ऐप आईडी और ऐप सीक्रेट प्रदान करना होगा, जिसे आप Facebook डेवलपर कंसोल में प्राप्त कर सकते हैं।
प्रोजेक्ट सेटिंग > क्षमताएं स्क्रीन से अपने Xcode प्रोजेक्ट में कीचेन शेयरिंग सक्षम करें।
अपने एक्सकोड प्रोजेक्ट में यूआरएल योजना के रूप में
fb FACEBOOK_APP_ID
जोड़ें।Info.plist
फ़ाइल में अपना Facebook ऐप आईडी और डिस्प्ले नाम जोड़ें:चाबी कीमत FacebookAppID FACEBOOK_APP_ID
(उदाहरण के लिए,1234567890
)फेसबुक डिस्प्लेनाम आपके ऐप का नाम एक फेसबुक प्रदाता उदाहरण प्रारंभ करें:
तीव्र
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
उद्देश्य सी
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
यदि आप Facebook Limited लॉगिन का उपयोग करना चाहते हैं, तो
FUIFacebookAuth
उदाहरण परuseLimitedLogin
गुण सेट करें।तीव्र
provider.useLimitedLogin = true
उद्देश्य सी
provider.useLimitedLogin = YES;
ट्विटर
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और ट्विटर को सक्षम करें। ट्विटर साइन-इन सक्षम करने के लिए, आपको अपनी ट्विटर एपीआई उपभोक्ता कुंजी और रहस्य प्रदान करना होगा, जिसे आप ट्विटर एप्लिकेशन प्रबंधन कंसोल में प्राप्त कर सकते हैं।
Twitter लॉगिन के लिए कॉन्फ़िगर किया गया OAuth प्रदाता उदाहरण प्रारंभ करें:
तीव्र
provider = FUIOAuth.twitterAuthProvider()
उद्देश्य सी
FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
फ़ोन नंबर
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और फ़ोन नंबर साइन-इन सक्षम करें।
फायरबेस को यह सत्यापित करने में सक्षम होना चाहिए कि आपके ऐप से फ़ोन नंबर साइन-इन अनुरोध आ रहे हैं। इसे पूरा करने के तरीकों में से एक एपीएन अधिसूचनाओं के माध्यम से है। विवरण के लिए ऐप सत्यापन सक्षम करें देखें।
Firebase प्रमाणीकरण के साथ उपयोग के लिए APN सूचनाएं सक्षम करने के लिए:
Xcode में, अपने प्रोजेक्ट के लिए पुश सूचनाएँ सक्षम करें ।
Firebase पर अपनी APNs प्रमाणीकरण कुंजी अपलोड करें। यदि आपके पास पहले से कोई APNs प्रमाणीकरण कुंजी नहीं है, तो Apple डेवलपर सदस्य केंद्र में एक बनाना सुनिश्चित करें।
फायरबेस कंसोल में अपने प्रोजेक्ट के अंदर, गियर आइकन का चयन करें, प्रोजेक्ट सेटिंग्स का चयन करें और फिर क्लाउड मैसेजिंग टैब का चयन करें।
आईओएस ऐप कॉन्फ़िगरेशन के तहत एपीएन प्रमाणीकरण कुंजी में, अपलोड बटन पर क्लिक करें।
उस स्थान पर ब्राउज़ करें जहां आपने अपनी कुंजी सहेजी थी, उसका चयन करें, और खोलें पर क्लिक करें। कुंजी के लिए कुंजी आईडी जोड़ें ( Apple Developer Member Center में उपलब्ध) और अपलोड पर क्लिक करें।
यदि आपके पास पहले से APN प्रमाणपत्र है, तो आप इसके बजाय प्रमाणपत्र अपलोड कर सकते हैं।
जब डिवाइस पर APN सूचनाएं प्राप्त नहीं होती हैं, तो Firebase अनुरोधों को सत्यापित करने के लिए reCAPTCHA का उपयोग करता है।
ReCAPTCHA सत्यापन सक्षम करने के लिए, Xcode में निम्न कार्य करें:
- अपना प्रोजेक्ट कॉन्फ़िगरेशन खोलें: बाएं ट्री व्यू में प्रोजेक्ट के नाम पर डबल-क्लिक करें। TARGETS अनुभाग से अपने ऐप का चयन करें, फिर जानकारी टैब का चयन करें और URL प्रकार अनुभाग का विस्तार करें।
- + बटन पर क्लिक करें, और अपनी एन्कोडेड ऐप आईडी को URL योजना के रूप में जोड़ें। आप अपने आईओएस ऐप के अनुभाग में, फायरबेस कंसोल के सामान्य सेटिंग्स पृष्ठ पर अपनी एन्कोडेड ऐप आईडी पा सकते हैं। अन्य क्षेत्रों को खाली छोड़ दें।
पूर्ण होने पर, आपका कॉन्फ़िगरेशन निम्न के समान दिखना चाहिए (लेकिन आपके एप्लिकेशन-विशिष्ट मानों के साथ):
वैकल्पिक : फायरबेस आपके ऐप के एपीएन टोकन को स्वचालित रूप से प्राप्त करने के लिए, फायरबेस द्वारा आपके ऐप को भेजे जाने वाले साइलेंट पुश नोटिफिकेशन को संभालने के लिए, और सत्यापन के दौरान रीकैप्चा सत्यापन पृष्ठ से कस्टम स्कीम रीडायरेक्ट को स्वचालित रूप से इंटरसेप्ट करने के लिए स्विज़लिंग विधि का उपयोग करता है।
यदि आप स्विज़लिंग का उपयोग नहीं करना चाहते हैं, तो परिशिष्ट देखें: फायरबेस एसडीके प्रमाणीकरण डॉक्स में स्विज़लिंग के बिना फ़ोन साइन-इन का उपयोग करना ।
दाखिल करना
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];
}
अंत में, FUIAuth
से AuthViewController
का उदाहरण प्राप्त करें। फिर आप इसे या तो अपने ऐप के पहले व्यू कंट्रोलर के रूप में प्रस्तुत कर सकते हैं या इसे अपने ऐप में किसी अन्य व्यू कंट्रोलर से प्रस्तुत कर सकते हैं।
तीव्र
साइन-इन विधि चयनकर्ता प्राप्त करने के लिए:
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];
आपके द्वारा प्रमाणीकरण दृश्य प्रस्तुत करने और उपयोगकर्ता के साइन इन करने के बाद, परिणाम didSignInWithUser:error:
विधि में FirebaseUI प्रामाणिक प्रतिनिधि को वापस कर दिया जाता है:
तीव्र
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 इश्यू ट्रैकर का उपयोग करें।