میتوانید از Firebase Authentication برای ایجاد و استفاده از حسابهای ناشناس موقت برای اصالتسنجی با Firebase استفاده کنید. از این حسابهای موقت ناشناس میتوان برای اجازه دادن به کاربرانی که هنوز در برنامه شما ثبتنام نکردهاند برای کار با دادههای محافظتشده توسط قوانین امنیتی استفاده کرد. اگر کاربر ناشناسی تصمیم بگیرد در برنامه شما ثبتنام کند، میتوانید اعتبارنامههای ورود به سیستم او را به حساب ناشناس پیوند دهید تا بتواند در جلسات آینده نیز با دادههای محافظتشدهاش کار کند.
قبل از شروع
- Firebase را به پروژه جاوا اسکریپت خود اضافه کنید.
- اگر هنوز برنامهتان را به پروژه Firebase متصل نکردهاید، این کار را از کنسول Firebase انجام دهید.
-
فعال کردن اصالتسنجی ناشناس:
- در کنسول Firebase، به امنیت > اصالتسنجی بروید.
- در زبانه روش ورود به سیستم، ارائهدهنده ورود به سیستم ناشناس را فعال کنید.
- اختیاری: اگر پروژهتان را به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید پاکسازی خودکار را فعال کنید. وقتی این تنظیم را فعال میکنید، حسابهای ناشناس قدیمیتر از ۳۰ روز بهطور خودکار حذف خواهند شد. در پروژههایی که پاکسازی خودکار در آنها فعال است، اصالتسنجی ناشناس دیگر در محدودیتهای استفاده یا سهمیههای صورتحساب محاسبه نخواهد شد. پاکسازی خودکار را ببینید.
اصالتسنجی ناشناس با Firebase
وقتی کاربری که از سیستم خارج شده است از ویژگی برنامهای استفاده میکند که به اصالتسنجی با Firebase نیاز دارد، با تکمیل مراحل زیر، کاربر را بهصورت ناشناس به سیستم وارد کنید:
- متد
signInAnonymouslyرا فراخوانی کنید:در اینجا میتوانید خطاها را نیز شناسایی و مدیریت کنید. برای مشاهده فهرست کدهای خطا، به اسناد مرجع Auth نگاهی بیندازید.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; // ... });
- اگر روش
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 // ... } });
تبدیل حساب ناشناس به حساب دائمی
وقتی کاربر ناشناسی در برنامه شما ثبتنام میکند، ممکن است بخواهید به او اجازه دهید کارش را با حساب جدیدش ادامه دهد—برای مثال، ممکن است بخواهید مواردی را که کاربر قبلاز ثبتنام به سبد خریدش اضافه کرده است در سبد خرید حساب جدیدش دردسترس قرار دهید. برای انجام این کار، مراحل زیر را تکمیل کنید:
- وقتی کاربر ثبتنام میکند، جریان ورود به سیستم را برای ارائهدهنده اصالتسنجی کاربر تا قبلاز فراخوانی یکی از روشهای
Auth.signInWithتکمیل کنید. برای مثال، دریافت کردن نشانه شناسایی Google کاربر، نشانه دسترسی Facebook، یا نشانی ایمیل و گذرواژه. 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);
شیء
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 کنترل کنید.