اصالت‌سنجی ناشناس با Firebase بااستفاده از C++‎

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

قبل از شروع

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

اصالت‌سنجی ناشناس با Firebase

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

کلاس Auth دروازه همه فراخوانی‌های API است.
  1. فایل‌های سرصفحه Auth و App را اضافه کنید:
    #include <cassert>
    #include <cstdint>
    
    #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();
  • اگر برنامه شما حلقه به‌روزرسانی دارد که به‌طور منظم (مثلاً ۳۰ یا ۶۰ بار در ثانیه) اجرا می‌شود، می‌توانید نتایج را یک‌بار در هر به‌روزرسانی با 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());
      }
    }
    یا اگر برنامه شما رویدادمحور است، ممکن است ترجیح دهید یک پاسخ‌به‌تماس را در «آینده» ثبت کنید.
  • تبدیل حساب ناشناس به حساب دائمی

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

    1. وقتی کاربر ثبت‌نام می‌کند، جریان ورود به سیستم را برای ارائه‌دهنده اصالت‌سنجی کاربر تا قبل‌از فراخوانی یکی از روش‌های Auth::SignInWith تکمیل کنید. برای مثال، دریافت کردن نشانه شناسایی Google کاربر، نشانه دسترسی Facebook، یا نشانی ایمیل و گذرواژه.
    2. auth::Credential را برای ارائه‌دهنده اصالت‌سنجی جدید دریافت کنید:

      ورود به سیستم Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      ورود به سیستم Facebook
      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 اجازه می‌دهید حساب‌های ناشناس قدیمی‌تر از ۳۰ روز را به‌طور خودکار حذف کند. در پروژه‌هایی که پاک‌سازی خودکار در آن‌ها فعال است، اصالت‌سنجی ناشناس در محدودیت‌های استفاده یا سهمیه‌های صورت‌حساب محاسبه نمی‌شود.

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

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

    مراحل بعدی

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