يمكنك استخدام 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:34.11.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:24.0.1") }
- إذا لم يسبق لك ربط تطبيقك بمشروع Firebase، يمكنك إجراء ذلك من Firebase وحدة تحكّم.
- فعِّل المصادقة المجهولة الهوية:
- في وحدة تحكّم FirebaseFirebase، افتح قسم المصادقة.
- في صفحة طُرق تسجيل الدخول ، فعِّل طريقة تسجيل الدخول مجهول الهوية.
- اختياري: إذا سبق لك ترقية مشروعك إلى Firebase Authentication with Identity Platform، يمكنك تفعيل ميزة التنظيف التلقائي. عند تفعيل هذا الإعداد، سيتم حذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم تفعيل ميزة التنظيف التلقائي فيها، لن يتم احتساب المصادقة المجهولة الهوية ضمن حدود الاستخدام أو حصص الفوترة. راجع مقالة التنظيف التلقائي.
المصادقة مع Firebase بشكل مجهول الهوية
عندما يستخدم مستخدم سجّل خروجه ميزة في التطبيق تتطلّب المصادقة مع Firebase، سجِّل دخول المستخدم بشكل مجهول الهوية من خلال إكمال الخطوات التالية:
- في طريقة
onCreateللنشاط، احصل على مثيل مشترك من عنصرFirebaseAuthKotlin
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.