با Firebase به صورت ناشناس با استفاده از C++ احراز هویت

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

قبل از شروع

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

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

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

کلاس Auth دروازه همه تماس‌های API است.
  1. فایل‌های هدر Auth و App را اضافه کنید:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. در کد اولیه خود، یک کلاس firebase::App ایجاد کنید.
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. firebase::auth::Auth را برای firebase::App خود دریافت کنید. یک نگاشت یک به یک بین App و Auth وجود دارد.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Call Auth::SignInAnonymously .
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
    
  • اگر برنامه شما دارای یک حلقه به روز رسانی است که به طور منظم اجرا می شود (مثلاً 30 یا 60 بار در ثانیه)، می توانید نتایج را یک بار در هر به روز رسانی با Auth::SignInAnonymouslyLastResult بررسی کنید:
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.user.display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    یا اگر برنامه شما مبتنی بر رویداد است، ممکن است ترجیح دهید یک تماس برگشتی در Future ثبت کنید .
  • یک حساب کاربری ناشناس را به یک حساب دائمی تبدیل کنید

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

    1. هنگامی که کاربر ثبت نام می کند، جریان ورود به سیستم ارائه دهنده احراز هویت کاربر را تا فراخوانی یکی از متدهای Auth::SignInWith بدون احراز هویت، تکمیل کنید. به عنوان مثال، رمز Google ID کاربر، نشانه دسترسی فیس بوک، یا آدرس ایمیل و رمز عبور را دریافت کنید.
    2. برای ارائه‌دهنده احراز هویت جدید، یک auth::Credential دریافت کنید:

      ورود به سیستم گوگل
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      ورود به فیس بوک
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      ورود به سیستم با رمز عبور ایمیل
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. auth::Credential به متد LinkWithCredential کاربر ورود به سیستم ارسال کنید:

      // Link the new credential to the currently active user.
      firebase::auth::User current_user = auth->current_user();
      firebase::Future<firebase::auth::AuthResult> result =
          current_user.LinkWithCredential(credential);
      

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

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

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

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

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

    مراحل بعدی

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