يمكنك استخدام 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:33.7.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:23.1.0") }
- إذا لم يسبق لك ربط تطبيقك بمشروعك على Firebase، يمكنك إجراء ذلك من وحدة تحكّم Firebase.
- تفعيل المصادقة المجهولة:
- في وحدة تحكّم Firebase، افتح قسم Auth.
- في صفحة طُرق تسجيل الدخول، فعِّل طريقة تسجيل الدخول غير المحدَّد الهوية.
- اختياري: إذا كنت قد أجريت ترقية لمشروعك إلى 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
للحصول على بيانات حساب المستخدم.
تحويل حساب مجهول إلى حساب دائم
عندما يشترك مستخدم مجهول الهوية في تطبيقك، قد تريد السماح له بمتابعة عمله باستخدام حسابه الجديد. على سبيل المثال، يمكنك إتاحة السلع التي أضافها المستخدم إلى سلة التسوّق قبل الاشتراك في سلة التسوّق الخاصة بحسابه الجديد. لإجراء ذلك، أكمِل الخطوات التالية:
- عندما يسجّل المستخدم الدخول، أكمِل عملية تسجيل الدخول لمقدّم
المصادقة للمستخدم إلى أن تصل إلى استدعاء إحدى methods
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
في تسجيل
السحابة الإلكترونية.
الخطوات التالية
والآن بعد أن أصبح بإمكان المستخدمين المصادقة باستخدام Firebase، يمكنك التحكّم في إمكانية وصولهم إلى البيانات في قاعدة بيانات Firebase باستخدام قواعد Firebase.