میتوانید از Firebase Authentication برای ایجاد و استفاده از حسابهای ناشناس موقت برای اصالتسنجی با Firebase استفاده کنید. از این حسابهای ناشناس موقت میتوان برای اجازه دادن به کاربرانی که هنوز در برنامه شما ثبتنام نکردهاند برای کار با دادههای محافظتشده توسط قوانین امنیتی استفاده کرد. اگر کاربر ناشناسی تصمیم بگیرد در برنامهتان ثبتنام کند، میتوانید اعتبارنامه ورود به سیستم او را به حساب ناشناس پیوند دهید تا بتواند در جلسههای آینده به کار با دادههای محافظتشدهاش ادامه دهد.
قبل از شروع
-
از Swift Package Manager برای نصب و مدیریت وابستگیهای Firebase استفاده کنید.
- در Xcode، درحالیکه پروژه برنامهتان باز است، به File > Add Packages (فایل > افزودن بستهها) بروید.
- وقتی خواسته شد، مخزن کیت توسعه نرمافزار Firebase برای پلاتفرمهای Apple را اضافه کنید:
- کتابخانه Firebase Authentication را انتخاب کنید.
- پرچم
-ObjCرا به بخش Other Linker Flags (سایر پرچمهای پیونددهنده) در تنظیمات ساخت هدف اضافه کنید. - وقتی تمام شد، Xcode بهطور خودکار شروع به حل و بارگیری وابستگیهای شما در پسزمینه میکند.
https://github.com/firebase/firebase-ios-sdk.git
- اگر هنوز برنامهتان را به پروژه Firebase متصل نکردهاید، این کار را از کنسول Firebase انجام دهید.
-
فعال کردن اصالتسنجی ناشناس:
- در کنسول Firebase، به امنیت > اصالتسنجی بروید.
- در برگه روش ورود به سیستم، ارائهدهنده ورود به سیستم ناشناس را فعال کنید.
- اختیاری: اگر پروژهتان را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید پاکسازی خودکار را فعال کنید. وقتی این تنظیم را فعال کنید، حسابهای ناشناس قدیمیتر از ۳۰ روز بهطور خودکار حذف خواهند شد. در پروژههایی که پاکسازی خودکار در آنها فعال است، اصالتسنجی ناشناس دیگر در محدودیتهای استفاده یا سهمیههای صورتحساب لحاظ نخواهد شد. پاکسازی خودکار را ببینید.
اصالتسنجی با Firebase بهصورت ناشناس
وقتی کاربر خارجشده از سیستم از ویژگی برنامهای استفاده میکند که به اصالتسنجی با Firebase نیاز دارد، با تکمیل مراحل زیر کاربر را بهصورت ناشناس به سیستم وارد کنید:
- واحد
FirebaseCoreرا درUIApplicationDelegateو همچنین هر واحد Firebase دیگری که نماینده برنامهتان استفاده میکند وارد کنید. برای مثال، برای استفاده از Cloud Firestore و Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- یک
FirebaseAppنمونه مشترک را در روشapplication(_:didFinishLaunchingWithOptions:)نماینده برنامهتان پیکربندی کنید:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- اگر از SwiftUI استفاده میکنید، باید یک نماینده برنامه ایجاد کنید و آن را
ازطریق
UIApplicationDelegateAdaptorیاNSApplicationDelegateAdaptorبه ساختارAppخود متصل کنید. همچنین باید swizzling نماینده برنامه را غیرفعال کنید. برای اطلاعات بیشتر، دستورالعملهای SwiftUI را ببینید.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- روش
signInAnonymouslyWithCompletion:را فراخوانی کنید:Swift
Auth.auth().signInAnonymously { authResult, error in // ... }
Objective-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- اگر روش
signInAnonymouslyWithCompletion:بدون خطا تکمیل شود، میتوانید دادههای حساب کاربر ناشناس را از شیءFIRAuthDataResultدریافت کنید:Swift
guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
Objective-C
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
تبدیل حساب ناشناس به حساب دائمی
وقتی کاربر ناشناسی در برنامهتان ثبتنام میکند، ممکن است بخواهید به او اجازه دهید کارش را با حساب جدیدش ادامه دهد—برای مثال، ممکن است بخواهید محصولاتی را که کاربر قبلاز ثبتنام به سبد خریدش اضافه کرده است در سبد خرید حساب جدیدش دردسترس قرار دهید. برای انجام این کار، مراحل زیر را تکمیل کنید:
- وقتی کاربر ثبتنام میکند، جریان ورود به سیستم را برای ارائهدهنده اصالتسنجی کاربر تکمیل کنید، اما یکی از روشهای
FIRAuth.signInWithرا فراخوانی نکنید. برای مثال، دریافت کد شناسه Google، کد دسترسی Facebook، یا نشانی ایمیل و گذرواژه کاربر. FIRAuthCredentialرا برای ارائهدهنده اصالتسنجی جدید دریافت کنید:ورود با Google
Swift
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
Objective-C
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
ورود به سیستم Facebook
Swift
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Objective-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
ورود به سیستم با ایمیل و گذرواژه
Swift
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Objective-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
شیء
FIRAuthCredentialرا به روشlinkWithCredential:completion:کاربر واردشده به سیستم ارسال کنید:Swift
user.link(with: credential) { authResult, error in // ... } }
Objective-C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
اگر تماس با linkWithCredential:completion: موفقیتآمیز باشد، حساب جدید کاربر میتواند
به دادههای Firebase حساب ناشناس دسترسی پیدا کند.
پاکسازی خودکار
اگر پروژهتان را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید پاکسازی خودکار را در کنسول Firebase فعال کنید. وقتی این ویژگی را فعال میکنید، به Firebase اجازه میدهید حسابهای ناشناس قدیمیتر از ۳۰ روز را بهطور خودکار حذف کند. در پروژههایی که پاکسازی خودکار در آنها فعال است، اصالتسنجی ناشناس در محدودیتهای استفاده یا سهمیههای صورتحساب لحاظ نخواهد شد.
- هر حساب ناشناسی که پساز فعال کردن پاکسازی خودکار ایجاد شود ممکن است در هر زمانی پساز گذشت ۳۰ روز از ایجاد آن بهطور خودکار حذف شود.
- حسابهای ناشناس موجود ۳۰ روز پساز فعال کردن پاکسازی خودکار، واجدشرایط حذف خودکار خواهند بود.
- اگر پاکسازی خودکار را خاموش کنید، هر حساب ناشناسی که برای حذف شدن زمانبندی شده باشد همچنان برای حذف شدن زمانبندیشده باقی خواهد ماند.
- اگر حساب ناشناسی را با پیوند دادن آن به هر روش ورود به سیستمی «ارتقا» دهید، حساب بهطور خودکار حذف نخواهد شد.
اگر میخواهید قبلاز فعال کردن این ویژگی ببینید چند کاربر تحتتأثیر قرار خواهند گرفت و پروژهتان را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید براساس is_anon در Cloud Logging فیلتر کنید.
مراحل بعدی
اکنون که کاربران میتوانند با Firebase اصالتسنجی کنند، میتوانید دسترسی آنها را به دادههای پایگاه داده Firebase بااستفاده از قوانین Firebase کنترل کنید.