يمكنك استخدام Firebase Authentication لإنشاء حسابات مجهولة الهوية مؤقتة واستخدامها للمصادقة مع Firebase. يمكن استخدام هذه الحسابات المؤقتة المجهولة الهوية للسماح للمستخدمين الذين لم يشتركوا بعد في تطبيقك بالعمل مع البيانات المحمية بموجب قواعد الأمان. إذا قرر مستخدم مجهول الهوية الاشتراك في تطبيقك، يمكنك ربط بيانات اعتماد تسجيل الدخول الخاصة به بالحساب المجهول الهوية ليتمكّن من مواصلة العمل باستخدام بياناته المحمية في الجلسات المستقبلية.
قبل البدء
- أضِف Firebase إلى مشروع Android الخاص بك، في حال لم يسبق لك إجراء ذلك.
-
في ملف Gradle للوحدة (على مستوى التطبيق)
(عادةً
<project>/<app-module>/build.gradle.ktsأو<project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة Firebase Authentication لنظام التشغيل Android. ننصح باستخدام Firebase Android BoM للتحكّم في إصدارات المكتبة.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
باستخدام Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase لنظام التشغيل Android.
(بديل) إضافة تبعيات مكتبة Firebase بدون استخدام BoM
إذا اخترت عدم استخدام Firebase BoM، عليك تحديد كل إصدار من مكتبة Firebase في سطر التبعية الخاص به.
يُرجى العِلم أنّه في حال استخدام مكتبات Firebase متعددة في تطبيقك، ننصحك بشدة باستخدام BoM لإدارة إصدارات المكتبات، ما يضمن توافق جميع الإصدارات.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:25.0.0") }
- إذا لم يسبق لك ربط تطبيقك بمشروع Firebase، يمكنك إجراء ذلك من خلال وحدة تحكّم Firebase.
-
تفعيل المصادقة المجهولة:
- في وحدة تحكّم Firebase، انتقِل إلى الأمان > المصادقة.
- في علامة التبويب طريقة تسجيل الدخول، فعِّل موفِّر تسجيل الدخول المجهول.
- اختياري: إذا كنت قد رقّيت مشروعك إلى Firebase Authentication with Identity Platform، يمكنك تفعيل عملية التنظيف التلقائي. عند تفعيل هذا الإعداد، سيتم تلقائيًا حذف الحسابات المجهولة الهوية التي مرّ على إنشائها أكثر من 30 يومًا. في المشاريع التي تم فيها تفعيل ميزة التنظيف التلقائي، لن يتم احتساب المصادقة المجهولة الهوية ضمن حدود الاستخدام أو حصص الفوترة. يُرجى الاطّلاع على عملية التنظيف التلقائي.
المصادقة باستخدام Firebase بشكل مجهول الهوية
عندما يستخدم مستخدم سجّل خروجه ميزة في التطبيق تتطلّب المصادقة باستخدام Firebase، يمكنك تسجيل دخول المستخدم بشكل مجهول من خلال إكمال الخطوات التالية:
- في إجراء
onCreateالخاص بالنشاط، احصل على النسخة المشتركة من عنصرFirebaseAuth:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- عند بدء النشاط، تحقَّق مما إذا كان المستخدم قد سجّل الدخول حاليًا:
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
- أخيرًا، يمكنك استدعاء
signInAnonymouslyلتسجيل الدخول كمستخدم مجهول الهوية:إذا نجحت عملية تسجيل الدخول، يمكنك استخدام طريقةKotlin
auth.signInAnonymously() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInAnonymously() .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUserللحصول على بيانات حساب المستخدم.
تحويل حساب مجهول إلى حساب دائم
عندما يشترك مستخدم مجهول الهوية في تطبيقك، قد ترغب في السماح له بمواصلة عمله باستخدام حسابه الجديد، على سبيل المثال، قد ترغب في إتاحة العناصر التي أضافها المستخدم إلى سلة التسوق قبل اشتراكه في سلة التسوق الخاصة بحسابه الجديد. لإجراء ذلك، يُرجى إكمال الخطوات التالية:
- عندما يشترك المستخدم، أكمِل مسار تسجيل الدخول لمقدّم خدمة المصادقة الخاص بالمستخدم حتى استدعاء إحدى طرق
FirebaseAuth.signInWith، ولكن بدون تضمينها. على سبيل المثال، يمكنك الحصول على الرمز المميّز لرقم تعريف المستخدم على Google أو رمز الوصول إلى Facebook أو عنوان البريد الإلكتروني وكلمة المرور. احصل على
AuthCredentialلمقدّم المصادقة الجديد:تسجيل الدخول بحساب Google
Kotlin
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
تسجيل الدخول عبر Facebook
Kotlin
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
تسجيل الدخول باستخدام البريد الإلكتروني وكلمة المرور
Kotlin
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
مرِّر عنصر
AuthCredentialإلى طريقةlinkWithCredentialالخاصة بالمستخدم الذي سجّل الدخول:Kotlin
auth.currentUser!!.linkWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG, "linkWithCredential:success") val user = task.result?.user updateUI(user) } else { Log.w(TAG, "linkWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.getCurrentUser().linkWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "linkWithCredential:success"); FirebaseUser user = task.getResult().getUser(); updateUI(user); } else { Log.w(TAG, "linkWithCredential:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
في حال نجاح الطلب إلى linkWithCredential، يمكن لحساب المستخدم الجديد
الوصول إلى بيانات Firebase الخاصة بالحساب المجهول الهوية.
التنظيف التلقائي
إذا تمت ترقية مشروعك إلى Firebase Authentication with Identity Platform، يمكنك تفعيل ميزة التنظيف التلقائي في وحدة تحكّم Firebase. عند تفعيل هذه الميزة، تسمح لمنصة Firebase بحذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم تفعيل ميزة التنظيف التلقائي فيها، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفوترة.
- أي حسابات مجهولة الهوية يتم إنشاؤها بعد تفعيل ميزة التنظيف التلقائي قد يتم حذفها تلقائيًا في أي وقت بعد مرور 30 يومًا على إنشائها.
- ستكون الحسابات المجهولة الحالية مؤهَّلة للحذف التلقائي بعد 30 يومًا من تفعيل ميزة "التنظيف التلقائي".
- في حال إيقاف ميزة "التنظيف التلقائي"، سيظلّ أي حساب مجهول الهوية مجدوَل للحذف مجدوَلاً للحذف.
- إذا "رقّيت" حسابًا مجهول الهوية من خلال ربطه بأي طريقة لتسجيل الدخول، لن يتم حذف الحساب تلقائيًا.
إذا أردت معرفة عدد المستخدمين الذين سيتأثرون قبل تفعيل هذه الميزة، وكنت قد
رقّيت مشروعك إلى Firebase Authentication with Identity Platform، يمكنك الفلترة حسب
is_anon في Cloud
Logging.
الخطوات التالية
بعد أن أصبح بإمكان المستخدمين المصادقة باستخدام Firebase، يمكنك التحكّم في وصولهم إلى البيانات في قاعدة بيانات Firebase باستخدام قواعد Firebase.