المصادقة مع Firebase بدون الكشف عن الهوية باستخدام JavaScript

يمكنك استخدام مصادقة Firebase لإنشاء حسابات مؤقتة مجهولة الهوية واستخدامها للمصادقة باستخدام Firebase. يمكن استخدام هذه الحسابات المؤقتة المخفية الهوية للسماح للمستخدمين الذين لم يشتركوا بعد في تطبيقك باستخدام البيانات المحمية بقواعد الأمان. إذا قرّر مستخدم مجهول الهوية الاشتراك في تطبيقك، يمكنك ربط بيانات اعتماد تسجيل الدخول الخاصة به بالحساب المجهول كي يتمكّن من مواصلة استخدام بياناته المحمية في الجلسات المستقبلية.

قبل البدء

  1. أضِف Firebase إلى مشروع JavaScript.
  2. إذا لم تكن قد ربطت تطبيقك بمشروعك في Firebase، يمكنك إجراء ذلك من خلال وحدة تحكُّم Firebase.
  3. فعِّل المصادقة بدون الكشف عن هويتك:
    1. في وحدة تحكُّم Firebase، افتح قسم المصادقة.
    2. في صفحة طرق تسجيل الدخول، فعِّل طريقة تسجيل الدخول مجهول الهوية.
    3. اختياري: في حال ترقية مشروعك إلى مصادقة Firebase باستخدام منصّة الهوية، يمكنك تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا. عند تفعيل هذا الخيار، سيتم تلقائيًا حذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا. في المشاريع التي تم فيها تفعيل ميزة "التنظيف التلقائي"، لن تُحتسَب المصادقة المجهولة الهوية ضمن حدود الاستخدام أو حصص الفوترة. راجِع تنظيف البيانات تلقائيًا.

المصادقة باستخدام Firebase بهوية مجهولة

عندما يستخدم مستخدم لم يسجّل الدخول ميزة تطبيق تتطلّب المصادقة باستخدام Firebase، سجِّل دخوله مع إخفاء الهوية من خلال إكمال الخطوات التالية:

  1. عليك استدعاء طريقة signInAnonymously:

    واجهة برمجة التطبيقات Web modular API

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

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    ويمكنك هنا أيضًا رصد الأخطاء ومعالجتها. للحصول على قائمة برموز الأخطاء، يمكنك الاطّلاع على المستندات المرجعية للمصادقة.
  2. في حال إكمال طريقة signInAnonymously بدون خطأ، سيتم تشغيل المراقب المسجَّل في onAuthStateChanged وستتمكّن من الحصول على بيانات حساب المستخدم المجهول من العنصر User:

    واجهة برمجة التطبيقات Web modular API

    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
        // ...
      }
    });

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    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 modular API

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

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    تسجيل الدخول إلى Facebook

    واجهة برمجة التطبيقات Web modular API

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

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    تسجيل الدخول باستخدام كلمة مرور البريد الإلكتروني

    واجهة برمجة التطبيقات Web modular API

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

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. مرِّر الكائن AuthCredential إلى طريقة link الخاصة بالمستخدم الذي يسجّل دخوله:

    واجهة برمجة التطبيقات Web modular API

    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);
      });

    واجهة برمجة التطبيقات لمساحة الاسم على الويب

    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 باستخدام النظام الأساسي للهوية، يمكنك تفعيل ميزة الإزالة التلقائية في "وحدة تحكُّم Firebase". عند تفعيل هذه الميزة، تسمح لمنصة Firebase بحذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم فيها تفعيل ميزة "التنظيف التلقائي"، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفوترة.

  • وقد يتم تلقائيًا حذف أي حسابات مجهولة المصدر تم إنشاؤها بعد تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا في أي وقت بعد 30 يومًا من عملية الإنشاء.
  • ستكون الحسابات الحالية المجهولة المصدر مؤهَّلة للحذف التلقائي بعد 30 يومًا من تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا.
  • إذا أوقفت ميزة إزالة البرامج غير المرغوب فيها، ستظل أي حسابات مجهولة الهوية ومجدولة لحذفها مُجدوَلة ليتم حذفها.
  • في حال "ترقية" حساب مجهول من خلال ربطه بأي طريقة تسجيل دخول، لن يتم حذف الحساب تلقائيًا.

إذا أردت معرفة عدد المستخدمين الذين سيتأثرون بذلك قبل تفعيل هذه الميزة، وكنت قد أجريت ترقية لمشروعك إلى مصادقة Firebase باستخدام الهوية، يمكنك الفلترة حسب is_anon في التسجيل في السحابة الإلكترونية.

الخطوات اللاحقة

بعد أن تمكّن المستخدمون من المصادقة باستخدام Firebase، يمكنك الآن التحكّم في وصولهم إلى البيانات في قاعدة بيانات Firebase باستخدام قواعد Firebase.