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

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

قبل البدء

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

المصادقة باستخدام 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);
    تسجيل الدخول باستخدام Facebook

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

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

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

الخطوات التالية

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