Firebase ile kimlik doğrulamak için geçici anonim hesaplar oluşturmak ve kullanmak üzere Firebase Authentication'ü kullanabilirsiniz. Bu geçici anonim hesaplar, henüz uygulamanıza kaydolmamış kullanıcıların güvenlik kurallarıyla korunan verilerle çalışmasına olanak tanımak için kullanılabilir. Anonim bir kullanıcı uygulamanıza kaydolmaya karar verirse gelecekteki oturumlarda korunan verileriyle çalışmaya devam edebilmesi için oturum açma kimlik bilgilerini anonim hesaba bağlayabilirsiniz.
Başlamadan önce
-
Firebase bağımlılarını yüklemek ve yönetmek için Swift Package Manager'ı kullanın.
Firebase SDK'larını Apple projenize eklemenin farklı yolları (ör. doğrudan çerçeveleri içe aktarma ve CocoaPods kullanma) hakkında bilgi edinmek için- Xcode'da, uygulamanız açıkken Dosya > Paket Ekle'ye gidin.
- İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
- Firebase Authentication kitaplığını seçin.
-ObjC
işaretini, hedefinizin derleme ayarlarının Diğer Bağlantı Oluşturucu İşaretleri bölümüne ekleyin.- İşlem tamamlandığında Xcode, arka planda bağımlılarınızı otomatik olarak çözümlemeye ve indirmeye başlar.
https://github.com/firebase/firebase-ios-sdk.git
- Uygulamanızı henüz Firebase projenize bağlamadıysanız Firebase konsolundan bağlama
- Anonim kimlik doğrulamayı etkinleştirme:
- Firebase konsolunda Auth bölümünü açın.
- Oturum açma yöntemleri sayfasında Anonim oturum açma yöntemini etkinleştirin.
- İsteğe bağlı: Projenizi Firebase Authentication with Identity Platform sürümüne yükselttiyseniz otomatik temizlemeyi etkinleştirebilirsiniz. Bu ayarı etkinleştirdiğinizde, 30 günden eski anonim hesaplar otomatik olarak silinir. Otomatik temizleme özelliğinin etkin olduğu projelerde anonim kimlik doğrulaması artık kullanım sınırlarına veya faturalandırma kotalarına dahil edilmeyecektir. Otomatik temizleme bölümünü inceleyin.
Firebase ile anonim olarak kimlik doğrulama
Oturumunu kapatmış bir kullanıcı, Firebase ile kimlik doğrulama gerektiren bir uygulama özelliğini kullandığında aşağıdaki adımları uygulayarak kullanıcının anonim olarak oturum açmasını sağlayın:
FirebaseCore
modülünü ve uygulama temsilcinizin kullandığı diğer Firebase modülleriniUIApplicationDelegate
'inize aktarın. Örneğin, Cloud Firestore ve Authentication kullanmak için:import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Uygulama temsilcinizin
application(_:didFinishLaunchingWithOptions:)
yönteminde birFirebaseApp
shared instance yapılandırın:// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs [FIRApp configure];
- SwiftUI kullanıyorsanız bir uygulama temsilcisi oluşturmanız ve
UIApplicationDelegateAdaptor
veyaNSApplicationDelegateAdaptor
aracılığıylaApp
yapınıza eklemeniz gerekir. Ayrıca uygulama temsilcisi değiştirme işlemini de devre dışı bırakmanız gerekir. Daha fazla bilgi için SwiftUI talimatlarına bakın.@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
signInAnonymouslyWithCompletion:
yöntemini çağırın:Auth.auth().signInAnonymously { authResult, error in // ... }
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
signInAnonymouslyWithCompletion:
yöntemi hatasız bir şekilde tamamlanırsa anonim kullanıcının hesap verileriniFIRAuthDataResult
nesnesinden alabilirsiniz:guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
Anonim hesabı kalıcı hesaba dönüştürme
Anonim bir kullanıcı uygulamanıza kaydolduğunda, kullanıcının yeni hesabıyla çalışmaya devam etmesine izin vermek isteyebilirsiniz. Örneğin, kullanıcının kaydolmasından önce alışveriş sepetine eklediği öğeleri yeni hesabının alışveriş sepetine ekleyebilirsiniz. Bunun için aşağıdaki adımları uygulayın:
- Kullanıcı kaydolduğunda, kullanıcının kimlik doğrulama sağlayıcısı için oturum açma akışını
FIRAuth.signInWith
yöntemlerinden birini çağırmayı içermeyecek şekilde tamamlayın. Örneğin, kullanıcının Google kimlik jetonunu, Facebook erişim jetonunu veya e-posta adresini ve şifresini alın. Yeni kimlik doğrulama sağlayıcısı için bir
FIRAuthCredential
alın:Google ile Oturum Açma
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
Facebook Giriş
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
E-posta ve şifreyle oturum açma
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
FIRAuthCredential
nesnesini oturum açan kullanıcınınlinkWithCredential:completion:
yöntemine iletin:user.link(with: credential) { authResult, error in // ... } }
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
linkWithCredential:completion:
çağrısı başarılı olursa kullanıcının yeni hesabı, anonim hesabın Firebase verilerine erişebilir.
Otomatik temizleme
Projenizi Firebase Authentication with Identity Platform planına yükselttiyseniz Firebase konsolunda otomatik temizlemeyi etkinleştirebilirsiniz. Bu özelliği etkinleştirdiğinizde Firebase'ın 30 günden eski anonim hesapları otomatik olarak silmesine izin vermiş olursunuz. Otomatik temizleme özelliğinin etkin olduğu projelerde anonim kimlik doğrulaması, kullanım sınırlarına veya faturalandırma kotalarına dahil edilmez.
- Otomatik temizleme etkinleştirildikten sonra oluşturulan anonim hesaplar, oluşturulduktan 30 gün sonra herhangi bir zamanda otomatik olarak silinebilir.
- Mevcut anonim hesaplar, otomatik temizleme özelliği etkinleştirildikten 30 gün sonra otomatik olarak silinmeye uygun olur.
- Otomatik temizlemeyi devre dışı bırakırsanız silinmesi planlanan anonim hesaplar silinme planında kalır.
- Anonim bir hesabı herhangi bir oturum açma yöntemine bağlayarak "yükseltirseniz" hesap otomatik olarak silinmez.
Bu özelliği etkinleştirmeden önce kaç kullanıcının etkileneceğini görmek istiyorsanız ve projenizi Firebase Authentication with Identity Platform'e yükselttiyseniz Cloud Logging'da is_anon
'e göre filtreleme yapabilirsiniz.
Sonraki adımlar
Kullanıcılar artık Firebase ile kimlik doğrulayabiliyor. Bu sayede, Firebase kurallarını kullanarak Firebase veritabanınızdaki verilere erişimlerini kontrol edebilirsiniz.