Kullanıcılarınızın Google Hesaplarını kullanarak Firebase ile kimlik doğrulamalarını aşağıdaki şekilde sağlayabilirsiniz: uygulamanıza entegre ederek daha iyi bir deneyim sunar.
Başlamadan önce
Firebase bağımlılıklarını yükleyip yönetmek için Swift Package Manager'ı kullanın.
- Xcode'da, uygulama projeniz açıkken Dosya > Paket Ekle'yi tıklayın.
- İstendiğinde Firebase Apple platformlar SDK deposunu ekleyin:
- Firebase Authentication kitaplığını seçin.
-ObjC
işaretini, hedefinizin derleme ayarlarındaki Diğer Bağlayıcı İşaretleri bölümüne ekleyin.- İşlemi tamamladığınızda, Xcode otomatik olarak arka planda tutmalarını sağlar.
https://github.com/firebase/firebase-ios-sdk.git.
Google ile Oturum Açma SDK'sını projenize ekleme
Xcode'da, uygulama projeniz açıkken Dosya > Paket Ekle'yi tıklayın.
İstendiğinde Google ile Oturum Açma SDK'sı deposunu ekleyin:
https://github.com/google/GoogleSignIn-iOS
İşlemi tamamladığınızda, Xcode otomatik olarak arka planda tutmalarını sağlar.
Firebase projeniz için Google ile Oturum Açma özelliğini etkinleştirme
Kullanıcıların Google ile Oturum Açma özelliğini kullanarak oturum açmasına izin vermek için önce Firebase projeniz için Google ile Oturum Açma sağlayıcısı:
- Firebase konsolunda Kimlik Doğrulama bölümünü açın.
- Oturum açma yöntemi sekmesinde, Google sağlayıcısını etkinleştirin.
Kaydet'i tıklayın.
Projenizin
GoogleService-Info.plist
dosyasının yeni bir kopyasını indirin ve Xcode projenize kopyalayın. Mevcut sürümlerin üzerine yeni bir. (Firebase'i iOS cihazınıza ekleme başlıklı makaleyi inceleyin) projesi) ekleyin.)
Gerekli başlık dosyalarını içe aktarın
Öncelikle, Firebase SDK'sı ve Google ile Oturum Açma SDK'sı başlık dosyalarını en iyi şekilde yararlanabilirsiniz.
Swift
import FirebaseCore import FirebaseAuth import GoogleSignIn
Objective-C
@import FirebaseCore; @import GoogleSignIn;
Google ile Oturum Açma hizmetini uygula
Aşağıdaki adımları uygulayarak Google ile Oturum Açma özelliğini uygulayın. Bkz. Google ile Oturum Açma geliştirici belgelerine bakın iOS ile oturum açın.
- Xcode projenize özel URL şemaları ekleyin:
- Proje yapılandırmanızı açın: Soldaki ağaçta proje adını tıklayın görünüm. HEDEFLER bölümünden uygulamanızı seçin, ardından Bilgi sekmesini seçin ve URL Türleri bölümünü genişletin.
- + düğmesini tıklayın ve geri almak için bir URL şeması ekleyin
girin. Bu değeri bulmak için
yapılandırma dosyasınıGoogleService-Info.plist REVERSED_CLIENT_ID
tuşuna basın. Bu anahtarın değerini kopyalayın, ve yapılandırma sayfasındaki URL Şemaları kutusuna yapıştırın. Diğer alanları değiştirmeden bırakın.Tamamlandığında yapılandırmanız şuna benzer bir görünümde olacaktır: aşağıdaki (ancak uygulamaya özel değerlerinizle):
- Uygulamanızdaki yetki verilmiş kullanıcının
application:didFinishLaunchingWithOptions:
hesabında yöntemini kullanıyorsanızFirebaseApp
nesnesini yapılandırın.Swift
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Uygulamanızın
application:openURL:options:
yöntemini uygulayın izin ver. Yöntem,handleURL
şu URL'yi düzgün bir şekilde işleyecek:GIDSignIn
örneği sonunda alınacağını belirler.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]; }
- Uygulamanızın sunum görünümü denetleyicisini ve istemci kimliğini
signIn
yöntemini seçin ve Firebase oluşturun Ortaya çıkan Google kimlik doğrulama jetonundan elde edilen kimlik doğrulama kimlik bilgisi: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 { // ... } }];
- Görsel senaryo taslağınıza, XIB dosyanıza
GIDSignInButton
ekleyin veya bunu programatik olarak örneklendirebilirsiniz. Düğmeyi resimli taslağınıza veya XIB'nize eklemek için bir Görünüm ekleyin ve özel sınıfınıGIDSignInButton
- İsteğe bağlı: Düğmeyi özelleştirmek istiyorsanız
takip etmek için:
Swift
- Görünüm denetleyicinizde, oturum açma düğmesini mülk olarak tanımlayın.
@IBOutlet weak var signInButton: GIDSignInButton!
- Düğmeyi az önce yaptığınız
signInButton
mülküne bağlayın bildirmişti. - GIDSignInButton nesnesini tanımlayın.
Objective-C
- Görünüm denetleyicinizin başlık dosyasında oturum açma düğmesini
@property(weak, nonatomic) IBOutlet GIDSignInButton *signInButton;
- Düğmeyi az önce yaptığınız
signInButton
mülküne bağlayın bildirmişti. - GIDSignInButton nesnesini tanımlayın.
- Görünüm denetleyicinizde, oturum açma düğmesini mülk olarak tanımlayın.
Firebase ile kimlik doğrulama
Son olarak, kimlik doğrulama kimlik bilgisi oluşturarak Firebase giriş işlemini tamamlayın. ele alacağız.
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; // ... }];
Sonraki adımlar
Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.
-
Uygulamalarınızda, kullanıcıların temel profil bilgilerini şuradan alabilirsiniz:
User
nesnesini tanımlayın. Kullanıcıları Yönetme başlıklı makaleye göz atın. Firebase Realtime Database ve Cloud Storage içinde Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz:
auth
değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.
Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.
Bir kullanıcının oturumunu kapatmak için numaralı telefonu arayın
signOut:
değerleridir.
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; }
Ayrıca tüm kimlik doğrulama aralığı için hata işleme kodu da ekleyebilirsiniz. hatalar. Hataları İşleme bölümüne bakın.