يمكنك استخدام 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.12.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 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.