اصالت‌سنجی با Firebase به‌صورت ناشناس بااستفاده از جاوا اسکریپت

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

قبل از شروع

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

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

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

  1. متد signInAnonymously را فراخوانی کنید:

    Web

    import { getAuth, signInAnonymously } from "firebase/auth";
    
    const auth = getAuth();
    signInAnonymously(auth)
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });

    Web

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    در اینجا می‌توانید خطاها را نیز شناسایی و مدیریت کنید. برای مشاهده فهرست کدهای خطا، به اسناد مرجع Auth نگاهی بیندازید.
  2. اگر روش signInAnonymously بدون خطا تکمیل شود، ناظر ثبت‌شده در onAuthStateChanged راه‌اندازی خواهد شد و می‌توانید داده‌های حساب کاربر ناشناس را از شیء User دریافت کنید:

    Web

    import { getAuth, onAuthStateChanged } from "firebase/auth";
    
    const auth = getAuth();
    onAuthStateChanged(auth, (user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/auth.user
        const uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

    Web

    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        // User is signed in, see docs for a list of available properties
        // https://firebase.google.com/docs/reference/js/v8/firebase.User
        var uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

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

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

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

    ‫ورود با Google

    Web

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    ورود به سیستم فیس‌بوک

    Web

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    ورود به سیستم با ایمیل و گذرواژه

    Web

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. شیء AuthCredential را به روش link کاربر واردشده منتقل کنید:

    Web

    import { getAuth, linkWithCredential } from "firebase/auth";
    
    const auth = getAuth();
    linkWithCredential(auth.currentUser, credential)
      .then((usercred) => {
        const user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

    Web

    auth.currentUser.linkWithCredential(credential)
      .then((usercred) => {
        var user = usercred.user;
        console.log("Anonymous account successfully upgraded", user);
      }).catch((error) => {
        console.log("Error upgrading anonymous account", error);
      });

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

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

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

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

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

مراحل بعدی

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