با احراز هویت Firebase در Android شروع کنید

برنامه خود را به Firebase وصل کنید

اگر هنوز Firebase را به پروژه اندروید خود اضافه نکرده‌اید، آن را اضافه کنید.

Firebase Authentication به برنامه خود اضافه کنید

  1. در فایل Gradle ماژول (سطح برنامه) خود (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradle )، وابستگی مربوط به کتابخانه Firebase Authentication برای اندروید را اضافه کنید. توصیه می‌کنیم برای کنترل نسخه‌بندی کتابخانه Firebase Android BoM استفاده کنید.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.9.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 استفاده خواهد کرد.

    (جایگزین) اضافه کردن وابستگی‌های کتابخانه 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")
    }

  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 برای نمونه‌سازی تعاملی، یا REST API شبیه‌ساز Authentication برای آزمایش غیرتعاملی.

راهنمای مفصلی در «برنامه خود را به شبیه‌ساز Authentication متصل کنید» موجود است. برای اطلاعات بیشتر، به معرفی Local Emulator Suite مراجعه کنید.

حالا بیایید به نحوه احراز هویت کاربران ادامه دهیم.

وضعیت فعلی احراز هویت را بررسی کنید

  1. یک نمونه از FirebaseAuth تعریف کنید.

    Kotlin

    private lateinit var auth: FirebaseAuth

    Java

    private FirebaseAuth mAuth;
  2. در متد onCreate() ، نمونه FirebaseAuth مقداردهی اولیه کنید.

    Kotlin

    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  3. هنگام مقداردهی اولیه Activity، بررسی کنید که آیا کاربر در حال حاضر وارد سیستم شده است یا خیر.

    Kotlin

    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

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);
                }
            }
        });

یک فرم برای ثبت نام کاربران جدید با ایمیل و رمز عبورشان اضافه کنید و هنگام ارسال، این متد جدید را فراخوانی کنید. می‌توانید نمونه‌ای از آن را در نمونه شروع سریع ما مشاهده کنید.

ورود کاربران فعلی

یک متد signIn جدید ایجاد کنید که یک آدرس ایمیل و رمز عبور را دریافت می‌کند، آنها را اعتبارسنجی می‌کند و سپس کاربر را با متد signInWithEmailAndPassword وارد سیستم می‌کند.

Kotlin

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);
                }
            }
        });

یک فرم برای ورود کاربران با ایمیل و رمز عبورشان اضافه کنید و این متد جدید را هنگام ارسال فراخوانی کنید. می‌توانید نمونه‌ای از آن را در نمونه شروع سریع ما مشاهده کنید.

دسترسی به اطلاعات کاربر

اگر کاربری با موفقیت وارد سیستم شده باشد، می‌توانید اطلاعات حساب کاربری او را در هر زمانی با استفاده از متد getCurrentUser دریافت کنید.

Kotlin

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();
}

مراحل بعدی

راهنماهای مربوط به افزودن سایر سرویس‌های هویت و احراز هویت را بررسی کنید: