احراز هویت با Firebase به صورت ناشناس در پلتفرم های اپل

می‌توانید از Firebase Authentication برای ایجاد و استفاده از حساب‌های ناشناس موقت برای احراز هویت با Firebase استفاده کنید. از این حساب‌های ناشناس موقت می‌توان استفاده کرد تا به کاربرانی که هنوز در برنامه شما ثبت نام نکرده‌اند اجازه دهند تا با داده‌های محافظت شده توسط قوانین امنیتی کار کنند. اگر یک کاربر ناشناس تصمیم گرفت در برنامه شما ثبت نام کند، می توانید اعتبار ورود به سیستم او را به حساب ناشناس پیوند دهید تا بتواند در جلسات بعدی با داده های محافظت شده خود کار کند.

قبل از اینکه شروع کنی

برای نصب و مدیریت وابستگی های Firebase از Swift Package Manager استفاده کنید.

  1. در Xcode، با باز بودن پروژه برنامه، به File > Add Packages بروید.
  2. هنگامی که از شما خواسته شد، مخزن SDK پلتفرم های Apple Firebase را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. کتابخانه Firebase Authentication را انتخاب کنید.
  5. پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی های شما در پس زمینه می کند.

در مرحله بعد، چند مرحله پیکربندی را انجام دهید:

  1. اگر هنوز برنامه خود را به پروژه Firebase متصل نکرده اید، این کار را از کنسول Firebase انجام دهید.
  2. فعال کردن احراز هویت ناشناس:
    1. در کنسول Firebase ، بخش Auth را باز کنید.
    2. در صفحه Sign-in Methods ، روش ورود به سیستم ناشناس را فعال کنید.
    3. اختیاری : پاکسازی خودکار را فعال کنید. وقتی این تنظیم را فعال می‌کنید، حساب‌های ناشناس قدیمی‌تر از 30 روز به‌طور خودکار حذف می‌شوند. در پروژه‌هایی که پاک‌سازی خودکار فعال است، احراز هویت ناشناس دیگر در محدودیت‌های استفاده یا سهمیه‌های صورت‌حساب حساب نمی‌شود. به پاکسازی خودکار مراجعه کنید.

با Firebase به صورت ناشناس احراز هویت

هنگامی که یک کاربر خارج از سیستم از یک ویژگی برنامه استفاده می‌کند که نیاز به احراز هویت با Firebase دارد، با انجام مراحل زیر به طور ناشناس وارد کاربر شوید:

  1. ماژول FirebaseCore را در UIApplicationDelegate خود و همچنین هر ماژول Firebase دیگری که نماینده برنامه شما استفاده می‌کند، وارد کنید. به عنوان مثال، برای استفاده از Cloud Firestore و Authentication:

    سریع

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    هدف-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. یک نمونه اشتراک‌گذاری شده FirebaseApp را معمولاً در روش اولیه‌ساز App یا برنامه نماینده application(_:didFinishLaunchingWithOptions:) :

    سریع

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    هدف-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. signInAnonymouslyWithCompletion: را فراخوانی کنید:

    سریع

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    

    هدف-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  4. اگر signInAnonymouslyWithCompletion: بدون خطا کامل شود، می توانید داده های حساب کاربری ناشناس را از شی FIRAuthDataResult :

    سریع

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    

    هدف-C

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;
    

یک حساب کاربری ناشناس را به یک حساب دائمی تبدیل کنید

هنگامی که یک کاربر ناشناس در برنامه شما ثبت نام می کند، ممکن است بخواهید به او اجازه دهید کار خود را با حساب جدید خود ادامه دهد - به عنوان مثال، ممکن است بخواهید مواردی را که کاربر قبل از ثبت نام به سبد خرید خود اضافه کرده است در جدید خود در دسترس قرار دهید. سبد خرید حساب برای این کار مراحل زیر را انجام دهید:

  1. هنگامی که کاربر ثبت نام می کند، جریان ورود به سیستم ارائه دهنده احراز هویت کاربر را تا فراخوانی یکی از روش های FIRAuth.signInWith ، بدون احراز هویت، تکمیل کنید. به عنوان مثال، رمز Google ID کاربر، نشانه دسترسی فیس بوک، یا آدرس ایمیل و رمز عبور را دریافت کنید.
  2. یک FIRAuthCredential برای ارائه دهنده احراز هویت جدید دریافت کنید:

    ورود به سیستم گوگل
    سریع
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    
    هدف-C
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    ورود به فیس بوک
    سریع
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    هدف-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    ورود به سیستم با رمز عبور ایمیل
    سریع
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    هدف-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. شی FIRAuthCredential را به پیوند کاربر ورود به سیستم با linkWithCredential:completion: :

    سریع
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    
    هدف-C
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];
    

اگر تماس با linkWithCredential:completion: موفقیت آمیز باشد، حساب جدید کاربر می تواند به داده های Firebase حساب ناشناس دسترسی پیدا کند.

پاکسازی خودکار

وقتی پاکسازی خودکار را در کنسول Firebase فعال می‌کنید، حساب‌های ناشناس قدیمی‌تر از 30 روز به‌طور خودکار حذف می‌شوند. فعال کردن این تنظیم باعث می‌شود پایگاه داده کاربر شما با حساب‌های استفاده نشده پر نشود. در پروژه‌هایی که پاکسازی خودکار فعال است، احراز هویت ناشناس جزو محدودیت‌های استفاده یا سهمیه‌های صورت‌حساب حساب نمی‌شود.

  • هر حساب ناشناس ایجاد شده پس از فعال کردن پاکسازی خودکار، 30 روز پس از ایجاد حذف خواهد شد.
  • حساب های ناشناس ایجاد شده قبل از فعال کردن پاکسازی خودکار حدود 30 روز پس از فعال کردن پاکسازی خودکار حذف خواهند شد.
  • اگر پاکسازی خودکار را خاموش کنید، هر حساب ناشناس برنامه‌ریزی‌شده برای حذف، برنامه‌ریزی شده برای حذف باقی می‌ماند.
  • اگر یک حساب ناشناس را با پیوند دادن آن به هر روش ورود به سیستم «ارتقا» کنید، حساب به طور خودکار حذف نخواهد شد.

اگر می‌خواهید قبل از فعال کردن این ویژگی ببینید چند کاربر تحت تأثیر قرار می‌گیرند و پروژه خود را به Firebase Authentication با Identity Platform ارتقا داده‌اید، می‌توانید با is_anon در Cloud Logging فیلتر کنید.

مراحل بعدی

اکنون که کاربران می توانند با Firebase احراز هویت کنند، می توانید با استفاده از قوانین Firebase دسترسی آنها به داده های پایگاه داده Firebase خود را کنترل کنید.