आप अपने उपयोगकर्ताओं को उनके Google खाते का इस्तेमाल करके, Firebase से पुष्टि करने की अनुमति दे सकते हैं. इसके लिए: अपने ऐप्लिकेशन में 'Google साइन इन' को इंटिग्रेट करना.
शुरू करने से पहले
Firebase डिपेंडेंसी इंस्टॉल और मैनेज करने के लिए, Swift पैकेज मैनेजर का इस्तेमाल करें.
- Xcode में, अपना ऐप्लिकेशन प्रोजेक्ट खोलने के लिए, फ़ाइल > पैकेज जोड़ना.
- जब कहा जाए, तब Firebase Apple प्लैटफ़ॉर्म SDK टूल का रिपॉज़िटरी जोड़ें:
- Firebase Authentication लाइब्रेरी चुनें.
- अपने टारगेट की बिल्ड सेटिंग के अन्य लिंकर फ़्लैग सेक्शन में
-ObjC
फ़्लैग जोड़ें. - यह काम पूरा होने पर, Xcode अपने-आप रिज़ॉल्व और डाउनलोड होना शुरू कर देगा पर निर्भर करता है.
https://github.com/firebase/firebase-ios-sdk.git
अपने प्रोजेक्ट में 'Google साइन-इन' SDK टूल जोड़ना
Xcode में, अपना ऐप्लिकेशन प्रोजेक्ट खोलने के लिए, फ़ाइल > पैकेज जोड़ना.
जब कहा जाए, तब Google साइन-इन SDK टूल का डेटा स्टोर करने की जगह जोड़ें:
https://github.com/google/GoogleSignIn-iOS
यह काम पूरा होने पर, Xcode अपने-आप रिज़ॉल्व और डाउनलोड होना शुरू कर देगा पर निर्भर करता है.
अपने Firebase प्रोजेक्ट के लिए 'Google साइन-इन' चालू करना
उपयोगकर्ताओं को 'Google साइन-इन' का इस्तेमाल करके साइन इन करने की अनुमति देने के लिए, आपको सबसे पहले आपके Firebase प्रोजेक्ट के लिए 'Google साइन-इन' की सेवा देने वाली कंपनी:
- Firebase कंसोल में, पुष्टि करना सेक्शन खोलें.
- साइन इन करने का तरीका टैब पर, Google की सेवा देने वाली कंपनी चालू करें.
सेव करें पर क्लिक करें.
अपने प्रोजेक्ट की
GoogleService-Info.plist
फ़ाइल की नई कॉपी डाउनलोड करें और इसे अपने Xcode प्रोजेक्ट में कॉपी करें. किसी भी मौजूदा वर्शन को नए वर्शन से ओवरराइट करें एक. (अपने iOS में Firebase जोड़ना प्रोजेक्ट.)
ज़रूरी हेडर फ़ाइलें इंपोर्ट करें
सबसे पहले, आपको Firebase SDK टूल और 'Google साइन-इन' SDK टूल की हेडर फ़ाइलें आपका ऐप्लिकेशन.
Swift
import FirebaseCore import FirebaseAuth import GoogleSignIn
Objective-C
@import FirebaseCore; @import GoogleSignIn;
'Google साइन इन' लागू करना
यह तरीका अपनाकर 'Google साइन-इन' लागू करें. Google साइन इन पेज Google के इस्तेमाल से जुड़ी जानकारी के लिए, डेवलपर दस्तावेज़ iOS से साइन इन करें.
- अपने Xcode प्रोजेक्ट में कस्टम यूआरएल स्कीम जोड़ें:
- अपना प्रोजेक्ट कॉन्फ़िगरेशन खोलें: बाईं ओर मौजूद ट्री में प्रोजेक्ट के नाम पर क्लिक करें व्यू. टारगेट सेक्शन में जाकर अपना ऐप्लिकेशन चुनें. इसके बाद, जानकारी टैब चुनकर यूआरएल के टाइप सेक्शन को बड़ा करें.
- + बटन पर क्लिक करें और अपने उलटे क्रम में यूआरएल स्कीम जोड़ें
Client-ID. यह वैल्यू देखने के लिए,
कॉन्फ़िगरेशन फ़ाइल है और इसे खोजेंGoogleService-Info.plist REVERSED_CLIENT_ID
कुंजी को दबाकर रखें. उस कुंजी का मान कॉपी करें, और इसे कॉन्फ़िगरेशन पेज पर यूआरएल स्कीम बॉक्स में चिपकाएं. अन्य फ़ील्ड को छूट न दें.पूरा होने पर, आपका कॉन्फ़िगरेशन कुछ ऐसा दिखेगा (लेकिन आपके ऐप्लिकेशन-विशिष्ट मानों के साथ):
- आपके ऐप्लिकेशन डेलिगेट की
application:didFinishLaunchingWithOptions:
में तरीके में,FirebaseApp
ऑब्जेक्ट को कॉन्फ़िगर करें.Swift
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- अपने ऐप्लिकेशन का
application:openURL:options:
तरीका लागू करें डेलिगेट. इस तरीके कोhandleURL
GIDSignIn
इंस्टेंस, जो उस यूआरएल को सही तरीके से हैंडल करेगा पुष्टि करने की प्रक्रिया खत्म होने पर आपका ऐप्लिकेशन मिल जाता है.Swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { return GIDSignIn.sharedInstance.handle(url) }
Objective-C
- (BOOL)application:(nonnull UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *, id> *)options { return [[GIDSignIn sharedInstance] handleURL:url]; }
- अपने ऐप्लिकेशन के लिए प्रज़ेंटिंग व्यू कंट्रोलर और क्लाइंट आईडी
'Google साइन इन' की सेवा देने वाला
signIn
तरीका और Firebase बनाएं नतीजे में मिलने वाले Google पुष्टि टोकन से पुष्टि करने वाला क्रेडेंशियल:Swift
guard let clientID = FirebaseApp.app()?.options.clientID else { return } // Create Google Sign In configuration object. let config = GIDConfiguration(clientID: clientID) GIDSignIn.sharedInstance.configuration = config // Start the sign in flow! GIDSignIn.sharedInstance.signIn(withPresenting: self) { [unowned self] result, error in guard error == nil else { // ... } guard let user = result?.user, let idToken = user.idToken?.tokenString else { // ... } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: user.accessToken.tokenString) // ... }
Objective-C
GIDConfiguration *config = [[GIDConfiguration alloc] initWithClientID:[FIRApp defaultApp].options.clientID]; [GIDSignIn.sharedInstance setConfiguration:config]; __weak __auto_type weakSelf = self; [GIDSignIn.sharedInstance signInWithPresentingViewController:self completion:^(GIDSignInResult * _Nullable result, NSError * _Nullable error) { __auto_type strongSelf = weakSelf; if (strongSelf == nil) { return; } if (error == nil) { FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString]; // ... } else { // ... } }];
- अपने स्टोरीबोर्ड, XIB फ़ाइल में
GIDSignInButton
जोड़ें या इसे प्रोग्राम के हिसाब से इंस्टैंशिएट करें. अपने स्टोरीबोर्ड या XIB पर बटन जोड़ने के लिए फ़ाइल में, कोई दृश्य जोड़ें और उसकी कस्टम क्लास कोGIDSignInButton
. - ज़रूरी नहीं: अगर आपको बटन को अपनी पसंद के मुताबिक बनाना है, तो
फ़ॉलो किया जा रहा है:
Swift
- अपने व्यू कंट्रोलर में, साइन इन बटन को प्रॉपर्टी के तौर पर सेट करें.
@IBOutlet weak var signInButton: GIDSignInButton!
- बटन को अपनी
signInButton
प्रॉपर्टी से कनेक्ट करें एलान किया गया था. - बटन को अपनी पसंद के मुताबिक बनाने के लिए, GIDSignInButton ऑब्जेक्ट है.
Objective-C
- अपने व्यू कंट्रोलर की हेडर फ़ाइल में, साइन-इन बटन को
प्रॉपर्टी.
@property(weak, nonatomic) IBOutlet GIDSignInButton *signInButton;
- बटन को अपनी
signInButton
प्रॉपर्टी से कनेक्ट करें एलान किया गया था. - बटन को अपनी पसंद के मुताबिक बनाने के लिए, GIDSignInButton ऑब्जेक्ट है.
- अपने व्यू कंट्रोलर में, साइन इन बटन को प्रॉपर्टी के तौर पर सेट करें.
Firebase की मदद से पुष्टि करें
आखिर में, पुष्टि करने के लिए क्रेडेंशियल बनाकर Firebase में लॉगिन करने की प्रोसेस पूरी करें पर क्लिक करें.
Swift
Auth.auth().signIn(with: credential) { result, error in // At this point, our user is signed in }
Objective-C
[[FIRAuth auth] signInWithCredential:credential completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (isMFAEnabled && error && error.code == FIRAuthErrorCodeSecondFactorRequired) { FIRMultiFactorResolver *resolver = error.userInfo[FIRAuthErrorUserInfoMultiFactorResolverKey]; NSMutableString *displayNameString = [NSMutableString string]; for (FIRMultiFactorInfo *tmpFactorInfo in resolver.hints) { [displayNameString appendString:tmpFactorInfo.displayName]; [displayNameString appendString:@" "]; } [self showTextInputPromptWithMessage:[NSString stringWithFormat:@"Select factor to sign in\n%@", displayNameString] completionBlock:^(BOOL userPressedOK, NSString *_Nullable displayName) { FIRPhoneMultiFactorInfo* selectedHint; for (FIRMultiFactorInfo *tmpFactorInfo in resolver.hints) { if ([displayName isEqualToString:tmpFactorInfo.displayName]) { selectedHint = (FIRPhoneMultiFactorInfo *)tmpFactorInfo; } } [FIRPhoneAuthProvider.provider verifyPhoneNumberWithMultiFactorInfo:selectedHint UIDelegate:nil multiFactorSession:resolver.session completion:^(NSString * _Nullable verificationID, NSError * _Nullable error) { if (error) { [self showMessagePrompt:error.localizedDescription]; } else { [self showTextInputPromptWithMessage:[NSString stringWithFormat:@"Verification code for %@", selectedHint.displayName] completionBlock:^(BOOL userPressedOK, NSString *_Nullable verificationCode) { FIRPhoneAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:verificationID verificationCode:verificationCode]; FIRMultiFactorAssertion *assertion = [FIRPhoneMultiFactorGenerator assertionWithCredential:credential]; [resolver resolveSignInWithAssertion:assertion completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (error) { [self showMessagePrompt:error.localizedDescription]; } else { NSLog(@"Multi factor finanlize sign in succeeded."); } }]; }]; } }]; }]; } else if (error) { // ... return; } // User successfully signed in. Get user data from the FIRUser object if (authResult == nil) { return; } FIRUser *user = authResult.user; // ... }];
अगले चरण
किसी उपयोगकर्ता के पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बना दिया जाता है और आपके खाते के क्रेडेंशियल मौजूद हैं, जैसे कि उपयोगकर्ता नाम और पासवर्ड, या पुष्टि करने वाली कंपनी की जानकारी—उपयोगकर्ता ने जिससे साइन इन किया है. यह नया खाते को आपके 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; }
ऐसा हो सकता है कि आप पुष्टि करने की पूरी रेंज के लिए, गड़बड़ी मैनेज करने वाला कोड भी जोड़ना चाहें गड़बड़ियां हैं. गड़बड़ियां मैनेज करना देखें.