المصادقة باستخدام Firebase مع إخفاء الهوية على نظام التشغيل Android

يمكنك استخدام مصادقة Firebase لإنشاء حسابات مؤقتة مجهولة الهوية واستخدامها للمصادقة باستخدام Firebase. يمكن استخدام هذه الحسابات المجهولة مؤقتًا السماح للمستخدمين الذين لم يشتركوا في تطبيقك بعد باستخدام البيانات المحمية وفقًا لقواعد الأمان إذا قرر مستخدم مجهول الهوية الاشتراك في تطبيقك، يمكنك: ربط بيانات اعتماد تسجيل الدخول بحساب مجهول حتى يتمكنوا من مواصلة العمل باستخدام بياناتهم المحمية من خلال الجلسات المستقبلية.

قبل البدء

  1. إذا لم تكن قد فعلت ذلك بالفعل، إضافة Firebase إلى مشروع Android
  2. في ملف 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 BoM) من 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")
    }
    
    هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ ستبدأ بعد تشرين الأول (أكتوبر) 2023 (الإصدار 32.5.0 من Firebase BoM)، بإمكان مطوّري برامج Kotlin وJava تعتمد على وحدة المكتبة الرئيسية (لمزيد من التفاصيل، راجع الأسئلة الشائعة حول هذه المبادرة).
  3. إذا لم تكن قد ربطت تطبيقك بمشروعك على Firebase، يمكنك إجراء ذلك من وحدة تحكُّم Firebase.
  4. تفعيل المصادقة المجهولة:
    1. في وحدة تحكُّم Firebase، افتح قسم المصادقة.
    2. في صفحة طرق تسجيل الدخول، فعِّل الخيار مجهول الهوية. تسجيل الدخول.
    3. اختياري: إذا قمت بترقية مشروعك إلى مصادقة Firebase باستخدام النظام الأساسي للهوية، يمكنك تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا. فعندما بعد تفعيل هذا الإعداد، سيتم تلقائيًا تحديد الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا حذف. في المشاريع التي تم فيها تفعيل ميزة "التنظيف التلقائي"، لن يتم تفعيل المصادقة المجهولة بعد ذلك يتم احتسابها ضمن حدود الاستخدام أو حصص الفوترة. عرض إزالة البرامج غير المرغوب فيها تلقائيًا:

المصادقة باستخدام Firebase بهوية مجهولة

عندما يستخدم مستخدم لم يسجّل الدخول ميزة تطبيق تتطلب المصادقة مع Firebase، سجِّل الدخول إلى المستخدم بدون الكشف عن هويتك من خلال إكمال الخطوات التالية:

  1. في طريقة 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();
  2. عند إعداد نشاطك، يُرجى التأكّد ممّا إذا كان المستخدم مسجّلاً الدخول في الوقت الحالي:

    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);
    }
  3. أخيرًا، اتّصِل بـ 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 للحصول على بيانات حساب المستخدم.

تحويل حساب مجهول إلى حساب دائم

عند اشتراك مستخدم مجهول في تطبيقك، قد تحتاج إلى السماح له مواصلة عملهم باستخدام حساباتهم الجديدة - على سبيل المثال، قد ترغب في عرض السلع التي أضافها المستخدم إلى سلّة التسوّق قبل الاشتراك متاحة في سلة التسوق الخاصة بالحساب الجديد. لإجراء ذلك، أكمل ما يلي الخطوات:

  1. عندما يشترك المستخدم، أكمِل إجراءات تسجيل الدخول إلى حساب المستخدم بمزود مصادقة يصل إلى، ولكن لا يشمل، الاتصال بأحد FirebaseAuth.signInWith طريقة على سبيل المثال، احصل على الرمز المميز لمعرّف Google للمستخدم، رمز الدخول إلى Facebook، أو عنوان البريد الإلكتروني وكلمة المرور.
  2. احصل على 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);
  3. تمرير الكائن 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.