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

ربط تطبيقك بمنصّة Firebase

إذا لم تكن قد فعلت ذلك بالفعل، إضافة Firebase إلى مشروع Android

إضافة "Firebase Authentication" إلى تطبيقك

  1. في ملف 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.2.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، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في Firebase.

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

  2. لاستخدام موفّر مصادقة، عليك تفعيله في وحدة تحكّم Firebase. انتقِل إلى صفحة "طريقة تسجيل الدخول" في Firebase Authentication. لتفعيل تسجيل الدخول باستخدام عنوان البريد الإلكتروني أو كلمة المرور وأي موفرين آخرين للهوية التي تريدها لتطبيقك.

(اختياري) إنشاء نموذج أولي واختباره باستخدام "Firebase Local Emulator Suite"

قبل الحديث عن آلية تطبيقك في المصادقة على المستخدمين، إليك مجموعة من في ما يلي الأدوات التي يمكنك استخدامها لإنشاء نماذج أوّلية واختبار وظائف Authentication: Firebase Local Emulator Suite إذا كنت تريد الاختيار من بين أساليب المصادقة ومقدمي الخدمات، وتجربة نماذج بيانات مختلفة باستخدام بيانات عامة وخاصة باستخدام Authentication وFirebase Security Rules، أو إنشاء نماذج أولية لتصميمات واجهة المستخدم الخاصة بتسجيل الدخول، والقدرة على أن يكون العمل محليًا دون نشر خدمات مباشرة قد يكون فكرة رائعة.

ويُعد محاكي Authentication جزءًا من Local Emulator Suite، وهو لتطبيقك من التفاعل مع محتوى قواعد البيانات التي تمت محاكاتها وإعداداتها، بالإضافة إلى موارد المشروع التي تمت محاكاتها (الدوال وقواعد البيانات الأخرى وقواعد الأمان).

يتضمّن استخدام محاكي "Authentication" بضع خطوات فقط:

  1. إضافة سطر من الرمز إلى إعدادات اختبار تطبيقك للاتصال بالمحاكي.
  2. من جذر دليل المشروع المحلي، مع تشغيل firebase emulators:start.
  3. استخدام واجهة المستخدم Local Emulator Suite لإنشاء نماذج أولية تفاعلية، أو Authentication لمحاكي REST API لأغراض الاختبارات غير التفاعلية.

يتوفّر دليل تفصيلي في مقالة ربط تطبيقك بمحاكي Authentication. لمزيد من المعلومات، يمكنك الاطّلاع على مقدمة Local Emulator Suite.

لننتقل الآن إلى كيفية مصادقة المستخدمين.

التحقُّق من حالة المصادقة الحالية

  1. تعريف مثيل FirebaseAuth

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth

    Java

    private FirebaseAuth mAuth;
  2. في طريقة onCreate()، ابدأ بإعداد المثيل FirebaseAuth.

    Kotlin+KTX

    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  3. عند إعداد نشاطك، يُرجى التحقّق ممّا إذا كان المستخدم مسجّلاً حاليًا في الحساب. بوصة

    Kotlin+KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if (currentUser != null) {
            reload()
        }
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }

تسجيل اشتراك مستخدمين جدد

أنشئ طريقة createAccount جديدة تستخدم عنوان بريد إلكتروني وكلمة مرور، ثم يتحقق من صحتها، ثم ينشئ مستخدمًا جديدًا createUserWithEmailAndPassword .

Kotlin+KTX

auth.createUserWithEmailAndPassword(email, password)
    .addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            // Sign in success, update UI with the signed-in user's information
            Log.d(TAG, "createUserWithEmail:success")
            val user = auth.currentUser
            updateUI(user)
        } else {
            // If sign in fails, display a message to the user.
            Log.w(TAG, "createUserWithEmail:failure", task.exception)
            Toast.makeText(
                baseContext,
                "Authentication failed.",
                Toast.LENGTH_SHORT,
            ).show()
            updateUI(null)
        }
    }

Java

mAuth.createUserWithEmailAndPassword(email, password)
        .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, "createUserWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "createUserWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }
            }
        });

أضِف نموذجًا لتسجيل المستخدمين الجدد باستخدام عنوان البريد الإلكتروني وكلمة المرور الخاصَّين بهم والاسم الجديد. عند إرساله. يمكنك الاطّلاع على مثال في Quickstart sample (نموذج البدء السريع).

تسجيل دخول المستخدمين الحاليين

يمكنك إنشاء طريقة signIn جديدة تستخدم عنوان بريد إلكتروني وكلمة مرور، ثم التحقق من صحتها، ثم تسجيل دخول المستخدم من خلال signInWithEmailAndPassword.

Kotlin+KTX

auth.signInWithEmailAndPassword(email, password)
    .addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            // Sign in success, update UI with the signed-in user's information
            Log.d(TAG, "signInWithEmail:success")
            val user = auth.currentUser
            updateUI(user)
        } else {
            // If sign in fails, display a message to the user.
            Log.w(TAG, "signInWithEmail:failure", task.exception)
            Toast.makeText(
                baseContext,
                "Authentication failed.",
                Toast.LENGTH_SHORT,
            ).show()
            updateUI(null)
        }
    }

Java

mAuth.signInWithEmailAndPassword(email, password)
        .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, "signInWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }
            }
        });

أضِف نموذجًا لتسجيل دخول المستخدمين باستخدام عنوان بريدهم الإلكتروني وكلمة المرور الخاصَّين بهم والاتصال بهذا النموذج الجديد. عند إرساله. يمكنك الاطّلاع على مثال في Quickstart sample (نموذج البدء السريع).

الوصول إلى معلومات المستخدم

إذا سجّل أحد المستخدمين الدخول بنجاح، يمكنك الحصول على بيانات حسابه على أي نقطة باستخدام طريقة getCurrentUser.

Kotlin+KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = it.displayName
    val email = it.email
    val photoUrl = it.photoUrl

    // Check if user's email is verified
    val emailVerified = it.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    val uid = it.uid
}

Java

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

الخطوات التالية

اطّلِع على الأدلّة حول إضافة خدمات أخرى متعلقة بالهوية والمصادقة: