يمكنك استخدام مصادقة Firebase لإنشاء حسابات مؤقتة مجهولة الهوية واستخدامها للمصادقة باستخدام Firebase. يمكن استخدام هذه الحسابات المؤقتة المخفية الهوية للسماح للمستخدمين الذين لم يشتركوا بعد في تطبيقك باستخدام البيانات المحمية بقواعد الأمان. إذا قرّر مستخدم مجهول الهوية الاشتراك في تطبيقك، يمكنك ربط بيانات اعتماد تسجيل الدخول الخاصة به بالحساب المجهول كي يتمكّن من مواصلة استخدام بياناته المحمية في الجلسات المستقبلية.
قبل البدء
- أضِف Firebase إلى مشروع Android إذا لم يسبق لك إجراء ذلك.
-
في ملف Gradle للوحدة (على مستوى التطبيق)
(عادةً
<project>/<app-module>/build.gradle.kts
أو<project>/<app-module>/build.gradle
)، أضِف الاعتمادية لمكتبة مصادقة Firebase لنظام التشغيل Android. ننصح باستخدام بنود سياسة Android في Firebase للتحكّم في نُسَخ المكتبة.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.2")) // 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") }
باستخدام أداة إدارة قوائم التشغيل Android في Firebase، سيستخدم تطبيقك دائمًا الإصدارات المتوافقة من مكتبات Android في Firebase.
(بديل) إضافة ملحقات مكتبة Firebase بدون استخدام BoM
إذا اخترت عدم استخدام قائمة العناصر في Firebase، يجب تحديد كل إصدار من مكتبة 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.0.0") }
- إذا لم تكن قد ربطت تطبيقك بمشروعك في Firebase، يمكنك إجراء ذلك من خلال وحدة تحكُّم Firebase.
- فعِّل المصادقة بدون الكشف عن هويتك:
- في وحدة تحكُّم Firebase، افتح قسم المصادقة.
- في صفحة طرق تسجيل الدخول، فعِّل طريقة تسجيل الدخول مجهول الهوية.
- اختياري: في حال ترقية مشروعك إلى مصادقة Firebase باستخدام منصّة الهوية، يمكنك تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا. عند تفعيل هذا الخيار، سيتم تلقائيًا حذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا. في المشاريع التي تم فيها تفعيل ميزة "التنظيف التلقائي"، لن تُحتسَب المصادقة المجهولة الهوية ضمن حدود الاستخدام أو حصص الفوترة. راجِع تنظيف البيانات تلقائيًا.
المصادقة باستخدام Firebase بهوية مجهولة
عندما يستخدم مستخدم لم يسجّل الدخول ميزة تطبيق تتطلّب المصادقة باستخدام Firebase، سجِّل دخوله مع إخفاء الهوية من خلال إكمال الخطوات التالية:
- في طريقة
onCreate
لنشاطك، احصل على المثيل المشترك لكائنFirebaseAuth
:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- عند إعداد نشاطك، يُرجى التأكّد ممّا إذا كان المستخدم مسجّلاً الدخول في الوقت الحالي:
Kotlin+KTX
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+KTX
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+KTX
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
تسجيل الدخول إلى Facebook
Kotlin+KTX
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
تسجيل الدخول باستخدام كلمة مرور البريد الإلكتروني
Kotlin+KTX
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
مرِّر الكائن
AuthCredential
إلى طريقةlinkWithCredential
الخاصة بالمستخدم الذي يسجّل دخوله:Kotlin+KTX
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 باستخدام النظام الأساسي للهوية، يمكنك تفعيل ميزة الإزالة التلقائية في "وحدة تحكُّم Firebase". عند تفعيل هذه الميزة، تسمح لمنصة Firebase بحذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم فيها تفعيل ميزة "التنظيف التلقائي"، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفوترة.
- وقد يتم تلقائيًا حذف أي حسابات مجهولة المصدر تم إنشاؤها بعد تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا في أي وقت بعد 30 يومًا من عملية الإنشاء.
- ستكون الحسابات الحالية المجهولة المصدر مؤهَّلة للحذف التلقائي بعد 30 يومًا من تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا.
- إذا أوقفت ميزة إزالة البرامج غير المرغوب فيها، ستظل أي حسابات مجهولة الهوية ومجدولة لحذفها مُجدوَلة ليتم حذفها.
- في حال "ترقية" حساب مجهول من خلال ربطه بأي طريقة تسجيل دخول، لن يتم حذف الحساب تلقائيًا.
إذا أردت معرفة عدد المستخدمين الذين سيتأثرون بذلك قبل تفعيل هذه الميزة، وكنت قد أجريت
ترقية لمشروعك إلى مصادقة Firebase باستخدام الهوية، يمكنك الفلترة حسب
is_anon
في التسجيل في السحابة
الإلكترونية.
الخطوات اللاحقة
بعد أن تمكّن المستخدمون من المصادقة باستخدام Firebase، يمكنك الآن التحكّم في وصولهم إلى البيانات في قاعدة بيانات Firebase باستخدام قواعد Firebase.