Bắt đầu xác thực Firebase trên Android

Kết nối ứng dụng của bạn với Firebase

Nếu bạn chưa làm như vậy, thêm Firebase vào dự án Android của bạn.

Thêm tính năng Xác thực Firebase vào ứng dụng

  1. Trong tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), thêm phần phụ thuộc cho Thư viện xác thực Firebase cho Android. Bạn nên sử dụng Bảng kê khai thành phần của Firebase cho Android để kiểm soát việc tạo phiên bản thư viện.

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

    Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android trên Firebase.

    (Phương án thay thế) Thêm các phần phụ thuộc của thư viện Firebase mà không sử dụng BoM

    Nếu chọn không sử dụng BoM của Firebase, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc.

    Lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng của mình, chúng tôi thực sự bạn nên sử dụng BoM để quản lý các phiên bản thư viện. Điều này đảm bảo rằng tất cả các phiên bản đều tương thích.

    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")
    }
    
    Bạn đang tìm một mô-đun thư viện dành riêng cho Kotlin? Bắt đầu sau Tháng 10 năm 2023 (Firebase BoM 32.5.0), cả nhà phát triển Kotlin và Java đều có thể phụ thuộc vào mô-đun thư viện chính (để biết thông tin chi tiết, hãy xem Câu hỏi thường gặp về sáng kiến này).

  2. Để sử dụng nhà cung cấp dịch vụ xác thực, bạn cần bật nhà cung cấp đó trong Bảng điều khiển của Firebase. Chuyển đến trang Phương thức đăng nhập trong phần Xác thực Firebase để bật tính năng đăng nhập bằng email/mật khẩu và mọi nhà cung cấp danh tính khác mà bạn muốn cho ứng dụng của mình.

(Không bắt buộc) Tạo nguyên mẫu và thử nghiệm bằng Bộ mô phỏng cục bộ của Firebase

Trước khi nói về cách ứng dụng của bạn xác thực người dùng, hãy giới thiệu một số công cụ bạn có thể sử dụng để tạo nguyên mẫu và kiểm tra chức năng Xác thực: Bộ mô phỏng cục bộ của Firebase. Nếu bạn đang quyết định chọn các kỹ thuật xác thực và nhà cung cấp, thử các mô hình dữ liệu khác nhau với dữ liệu công khai và riêng tư bằng cách sử dụng Quy tắc bảo mật Firebase và Xác thực hoặc tạo nguyên mẫu cho thiết kế giao diện người dùng đăng nhập, có thể làm việc cục bộ mà không triển khai dịch vụ trực tiếp có thể là ý tưởng hay.

Trình mô phỏng Xác thực là một phần của Bộ công cụ mô phỏng cục bộ, cho phép ứng dụng của bạn tương tác với cấu hình và nội dung cơ sở dữ liệu được mô phỏng, như cũng như các tài nguyên dự án được mô phỏng (không bắt buộc) (các hàm, cơ sở dữ liệu khác, và quy tắc bảo mật).

Việc sử dụng Trình mô phỏng xác thực chỉ bao gồm một vài bước:

  1. Thêm một dòng mã vào cấu hình kiểm thử của ứng dụng để kết nối với trình mô phỏng.
  2. Trên gốc của thư mục dự án cục bộ, chạy firebase emulators:start.
  3. Sử dụng giao diện người dùng Bộ công cụ mô phỏng cục bộ để tạo nguyên mẫu tương tác, hoặc API REST của trình mô phỏng xác thực để kiểm thử không tương tác.

Bạn có thể xem hướng dẫn chi tiết tại bài viết Kết nối ứng dụng với Trình mô phỏng xác thực. Để biết thêm thông tin, hãy xem Giới thiệu về Bộ công cụ mô phỏng cục bộ.

Giờ hãy tiếp tục với cách xác thực người dùng.

Kiểm tra trạng thái xác thực hiện tại

  1. Khai báo một thực thể của FirebaseAuth.

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth

    Java

    private FirebaseAuth mAuth;
  2. Trong phương thức onCreate(), hãy khởi động thực thể FirebaseAuth.

    Kotlin+KTX

    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  3. Khi khởi tạo Hoạt động, hãy kiểm tra xem người dùng hiện đã ký hay chưa trong năm

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

Đăng ký người dùng mới

Tạo một phương thức createAccount mới lấy địa chỉ email và mật khẩu, xác thực chúng, rồi tạo một người dùng mới bằng 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);
                }
            }
        });

Thêm biểu mẫu để đăng ký người dùng mới bằng email và mật khẩu của họ và gọi người dùng mới này khi nó được gửi. Bạn có thể xem ví dụ trong mẫu bắt đầu nhanh.

Đăng nhập người dùng hiện có

Tạo một phương thức signIn mới lấy địa chỉ email và mật khẩu, xác thực chúng, rồi đăng nhập người dùng bằng 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);
                }
            }
        });

Thêm biểu mẫu để người dùng đăng nhập bằng email và mật khẩu của họ và gọi người dùng mới này khi nó được gửi. Bạn có thể xem ví dụ trong mẫu bắt đầu nhanh.

Truy cập thông tin người dùng

Nếu người dùng đã đăng nhập thành công, bạn có thể lấy dữ liệu tài khoản của họ tại bất kỳ điểm nào với phương thức 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();
}

Các bước tiếp theo

Khám phá hướng dẫn về cách thêm các dịch vụ danh tính và xác thực khác: