المصادقة مع Firebase بدون الكشف عن الهوية باستخدام JavaScript
تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكنك استخدام Firebase Authentication لإنشاء حسابات مؤقتة غير معروفة والتحقّق من الهوية باستخدام Firebase. يمكن استخدام هذه الحسابات المؤقتة غير المحددة الهوية للسماح للمستخدمين الذين لم يشتركوا بعد في تطبيقك بالعمل مع البيانات المحمية بقواعد الأمان. إذا قرر مستخدم مجهول الهوية الاشتراك في تطبيقك، يمكنك ربط بيانات اعتماد تسجيل الدخول الخاصة به بالحساب مجهول الهوية حتى يتمكّن من مواصلة العمل باستخدام بياناته المحمية في جلسات المستقبل.
في صفحة طُرق تسجيل الدخول، فعِّل طريقة تسجيل الدخول غير المحدَّد الهوية.
اختياري: إذا كنت قد أجريت ترقية لمشروعك إلى Firebase Authentication with Identity Platform، يمكنك تفعيل ميزة "التنظيف التلقائي". عند تفعيل هذا الإعداد، سيتم تلقائيًا حذف الحسابات المجهولة التي مرّ عليها أكثر من 30 يومًا. في المشاريع التي تم تفعيل ميزة "التنظيف التلقائي" فيها، لن يتم احتساب مصادقة الهوية المجهولة ضمن حدود الاستخدام أو حصص الفوترة. اطّلِع على التنظيف التلقائي.
المصادقة مع Firebase بشكل مجهول
عندما يستخدم مستخدم مسجَّل الخروج ميزة في التطبيق تتطلّب المصادقة باستخدام Firebase، سجِّل دخول المستخدم بشكل مجهول من خلال إكمال الخطوات التالية:
استدعاء الطريقة signInAnonymously:
Web
import{getAuth,signInAnonymously}from"firebase/auth";constauth=getAuth();signInAnonymously(auth).then(()=>{// Signed in..}).catch((error)=>{consterrorCode=error.code;consterrorMessage=error.message;// ...});
يمكنك أيضًا من خلال هذا القسم رصد الأخطاء ومعالجتها. للحصول على قائمة برموز الأخطاء، اطّلِع على مستندات مرجعية حول المصادقة.
إذا اكتملت طريقة signInAnonymously بدون خطأ، سيتم تنشيط المراقب المسجّل في onAuthStateChanged ويمكنك الحصول على بيانات حساب المستخدم المجهول من عنصر User:
Web
import{getAuth,onAuthStateChanged}from"firebase/auth";constauth=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.userconstuid=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.Uservaruid=user.uid;// ...}else{// User is signed out// ...}});
عندما يشترك مستخدم مجهول الهوية في تطبيقك، قد تريد السماح له باستمرار عمله باستخدام حسابه الجديد. على سبيل المثال، يمكنك إتاحة السلع التي أضافها المستخدم إلى سلة التسوّق قبل الاشتراك في سلة التسوّق الخاصة بحسابه الجديد. لإجراء ذلك، يُرجى إكمال الخطوات التالية:
عندما يشترك المستخدم، أكمِل عملية تسجيل الدخول لمقدّم المصادقة للمستخدم إلى أن تصل إلى استدعاء إحدى methods Auth.signInWith، ولكن بدون تضمين ذلك. على سبيل المثال، يمكنك الحصول على رمز تعريف المستخدم على Google رمز الوصول إلى Facebook أو عنوان البريد الإلكتروني وكلمة المرور.
الحصول على AuthCredential لموفِّر المصادقة الجديد:
في حال نجاح طلب link، يمكن لحساب المستخدم الجديد الوصول إلى بيانات Firebase للحساب المجهول الهوية.
التنظيف التلقائي
إذا كنت قد أجريت ترقية لمشروعك إلى Firebase Authentication with Identity Platform، يمكنك تفعيل ميزة "التنظيف التلقائي" في وحدة تحكّم Firebase. عند تفعيل هذه الميزة، أنت تسمح لـ Firebase بحذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم فيها تفعيل ميزة التنظيف التلقائي، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفوترة.
قد يتم تلقائيًا حذف أي حسابات مجهولة الهوية تم إنشاؤها بعد تفعيل ميزة "التنظيف التلقائي" في أي وقت بعد 30 يومًا من إنشائها.
ستكون الحسابات المجهولة الحالية مؤهّلة للحذف التلقائي بعد 30 يومًا من تفعيل ميزة "التنظيف التلقائي".
في حال إيقاف ميزة "التنظيف التلقائي"، ستبقى أي حسابات مجهولة الهوية مُجدوَلة للحذف.
في حال "ترقية" حساب مجهول الهوية من خلال ربطه بأي طريقة تسجيل دخول، لن يتم حذف الحساب تلقائيًا.
والآن بعد أن أصبح بإمكان المستخدمين المصادقة باستخدام Firebase، يمكنك التحكّم في إمكانية وصولهم إلى البيانات في قاعدة بيانات Firebase باستخدام قواعد Firebase.
تاريخ التعديل الأخير: 2025-08-08 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-08 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["You can use Firebase Authentication to create and use temporary anonymous accounts\nto authenticate with Firebase. These temporary anonymous accounts can be used to\nallow users who haven't yet signed up to your app to work with data protected\nby security rules. If an anonymous user decides to sign up to your app, you can\n[link their sign-in credentials to the anonymous\naccount](/docs/auth/web/account-linking) so that they can continue to work with their protected data in\nfuture sessions.\n\nBefore you begin\n\n1. [Add Firebase to your JavaScript project](/docs/web/setup).\n2. If you haven't yet connected your app to your Firebase project, do so from the [Firebase console](//console.firebase.google.com/).\n3. Enable anonymous auth:\n 1. In the [Firebase console](//console.firebase.google.com/), open the **Auth** section.\n 2. On the **Sign-in Methods** page, enable the **Anonymous** sign-in method.\n 3. **Optional** : If you've upgraded your project to [Firebase Authentication with Identity Platform](/auth#identity-platform), you can enable automatic clean-up. When you enable this setting, anonymous accounts older than 30 days will be automatically deleted. In projects with automatic clean-up enabled, anonymous authentication will no longer count toward usage limits or billing quotas. See [Automatic clean-up](#auto-cleanup).\n\nAuthenticate with Firebase anonymously\n\nWhen a signed-out user uses an app feature that requires authentication with\nFirebase, sign in the user anonymously by completing the following steps:\n\n1. Call the `signInAnonymously` method: \n\n Web \n\n ```javascript\n import { getAuth, signInAnonymously } from \"firebase/auth\";\n\n const auth = getAuth();\n signInAnonymously(auth)\n .then(() =\u003e {\n // Signed in..\n })\n .catch((error) =\u003e {\n const errorCode = error.code;\n const errorMessage = error.message;\n // ...\n });https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/snippets/auth-next/anonymous/auth_anon_sign_in.js#L8-L19\n ```\n\n Web \n\n ```javascript\n firebase.auth().signInAnonymously()\n .then(() =\u003e {\n // Signed in..\n })\n .catch((error) =\u003e {\n var errorCode = error.code;\n var errorMessage = error.message;\n // ...\n });https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/auth/anonymous.js#L9-L17\n ```\n This is also where you can catch and handle errors. For a list of error codes have a look at the [Auth Reference Docs](/docs/reference/js/firebase.auth.Auth#signInAnonymously).\n2. If the `signInAnonymously` method completes without error, the observer registered in the `onAuthStateChanged` will trigger and you can get the anonymous user's account data from the `User` object: \n\n Web \n\n ```javascript\n import { getAuth, onAuthStateChanged } from \"firebase/auth\";\n\n const auth = getAuth();\n onAuthStateChanged(auth, (user) =\u003e {\n if (user) {\n // User is signed in, see docs for a list of available properties\n // https://firebase.google.com/docs/reference/js/auth.user\n const uid = user.uid;\n // ...\n } else {\n // User is signed out\n // ...\n }\n });https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/snippets/auth-next/index/auth_state_listener.js#L8-L21\n ```\n\n Web \n\n ```javascript\n firebase.auth().onAuthStateChanged((user) =\u003e {\n if (user) {\n // User is signed in, see docs for a list of available properties\n // https://firebase.google.com/docs/reference/js/v8/firebase.User\n var uid = user.uid;\n // ...\n } else {\n // User is signed out\n // ...\n }\n });https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/auth/index.js#L43-L53\n ```\n\n| To protect your project from abuse, Firebase limits the number of new email/password and anonymous sign-ups that your application can have from the same IP address in a short period of time. You can request and schedule temporary changes to this quota from the [Firebase console](//console.firebase.google.com/project/_/authentication/providers).\n\nConvert an anonymous account to a permanent account\n\nWhen an anonymous user signs up to your app, you might want to allow them to\ncontinue their work with their new account---for example, you might want to\nmake the items the user added to their shopping cart before they signed up\navailable in their new account's shopping cart. To do so, complete the following\nsteps:\n\n1. When the user signs up, complete the sign-in flow for the user's authentication provider up to, but not including, calling one of the `Auth.signInWith` methods. For example, get the user's Google ID token, Facebook access token, or email address and password.\n2. Get an `AuthCredential` for the new authentication provider:\n\n Google Sign-In \n\n Web \n\n ```javascript\n import { GoogleAuthProvider } from \"firebase/auth\";\n\n const credential = GoogleAuthProvider.credential(\n googleUser.getAuthResponse().id_token);https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/snippets/auth-next/index/auth_make_google_credential.js#L8-L11\n ```\n\n Web \n\n ```javascript\n var credential = firebase.auth.GoogleAuthProvider.credential(\n googleUser.getAuthResponse().id_token);https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/auth/index.js#L13-L14\n ```\n\n Facebook Login \n\n Web \n\n ```javascript\n import { FacebookAuthProvider } from \"firebase/auth\";\n\n const credential = FacebookAuthProvider.credential(\n response.authResponse.accessToken);https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/snippets/auth-next/index/auth_make_facebook_credential.js#L8-L11\n ```\n\n Web \n\n ```javascript\n var credential = firebase.auth.FacebookAuthProvider.credential(\n response.authResponse.accessToken);https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/auth/index.js#L20-L21\n ```\n\n Email-password sign-in \n\n Web \n\n ```javascript\n import { EmailAuthProvider } from \"firebase/auth\";\n\n const credential = EmailAuthProvider.credential(email, password);https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/snippets/auth-next/index/auth_make_email_credential.js#L8-L10\n ```\n\n Web \n\n ```javascript\n var credential = firebase.auth.EmailAuthProvider.credential(email, password);https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/auth/link-multiple-accounts.js#L152-L152\n ```\n3. Pass the `AuthCredential` object to the sign-in user's\n `link` method:\n\n Web \n\n ```javascript\n import { getAuth, linkWithCredential } from \"firebase/auth\";\n\n const auth = getAuth();\n linkWithCredential(auth.currentUser, credential)\n .then((usercred) =\u003e {\n const user = usercred.user;\n console.log(\"Anonymous account successfully upgraded\", user);\n }).catch((error) =\u003e {\n console.log(\"Error upgrading anonymous account\", error);\n });https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/snippets/auth-next/link-multiple-accounts/auth_anonymous_link.js#L8-L17\n ```\n\n Web \n\n ```javascript\n auth.currentUser.linkWithCredential(credential)\n .then((usercred) =\u003e {\n var user = usercred.user;\n console.log(\"Anonymous account successfully upgraded\", user);\n }).catch((error) =\u003e {\n console.log(\"Error upgrading anonymous account\", error);\n });https://github.com/firebase/snippets-web/blob/467eaa165dcbd9b3ab15711e76fa52237ba37f8b/auth/link-multiple-accounts.js#L55-L61\n ```\n\nIf the call to `link` succeeds, the user's new account can\naccess the anonymous account's Firebase data.\n| This technique can also be used to [link any two accounts](/docs/auth/web/account-linking).\n\nAutomatic clean-up\n\nIf you've upgraded your project to [Firebase Authentication with Identity Platform](/docs/auth#identity-platform), you can\nenable automatic clean-up in the Firebase console. When you enable this feature you allow\nFirebase to automatically delete anonymous accounts older than 30 days. In projects with automatic\nclean-up enabled, anonymous authentication will not count toward usage limits or billing quotas.\n\n- Any anonymous accounts created after enabling automatic clean-up might be automatically deleted any time after 30 days post-creation.\n- Existing anonymous accounts will be eligible for automatic deletion 30 days after enabling automatic clean-up.\n- If you turn automatic clean-up off, any anonymous accounts scheduled to be deleted will remain scheduled to be deleted.\n- If you \"upgrade\" an anonymous account by linking it to any sign-in method, the account will not get automatically deleted.\n\nIf you want to see how many users will be affected before you enable this feature, and you've\nupgraded your project to [Firebase Authentication with Identity Platform](/docs/auth#identity-platform), you can filter by\n`is_anon` in [Cloud\nLogging](https://cloud.google.com/logging/docs).\n\nNext steps\n\nNow that users can authenticate with Firebase, you can control their access to\ndata in your Firebase database using\n[Firebase rules](/docs/database/security#section-authorization)."]]