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

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

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

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

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

وقتی کاربری که از سیستم خارج شده و از آن خارج شده است از یک ویژگی برنامه که نیاز به احراز هویت با 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);
  • تابع 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 تکمیل کنید، اما این شامل آن نمی‌شود. برای مثال، توکن شناسه‌ی گوگل، توکن دسترسی فیس‌بوک یا آدرس ایمیل و رمز عبور کاربر را دریافت کنید.
    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 روز پس از ایجاد، به طور خودکار حذف شود.
    • حساب‌های کاربری ناشناس موجود، ۳۰ روز پس از فعال کردن قابلیت پاکسازی خودکار، واجد شرایط حذف خودکار خواهند بود.
    • اگر پاکسازی خودکار را خاموش کنید، هر حساب ناشناسی که برای حذف برنامه‌ریزی شده باشد، همچنان در برنامه حذف باقی خواهد ماند.
    • اگر یک حساب کاربری ناشناس را با پیوند دادن آن به هر روش ورود به سیستم «ارتقاء» دهید، حساب به طور خودکار حذف نمی‌شود.

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

    مراحل بعدی

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