Kết nối ứng dụng của bạn với Firebase
Nếu bạn chưa có, hãy thêm Firebase vào dự án Android của bạn .
Thêm Xác thực Firebase vào ứng dụng của bạn
Sử dụng Firebase Android BoM , khai báo phần phụ thuộc cho thư viện Android Xác thực Firebase trong tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường làapp/build.gradle
). Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.2.0') // Declare 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 Firebase Android.
(Thay thế) Khai báo các phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu bạn chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.
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ự khuyên 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 { // Declare 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:21.0.6' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.2.0') // Declare 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-ktx' }
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 Firebase Android.
(Thay thế) Khai báo các phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu bạn chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.
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ự khuyên 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 { // Declare 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-ktx:21.0.6' }
Để sử dụng nhà cung cấp xác thực, bạn cần bật nó trong bảng điều khiển Firebase . Truy cập trang Phương pháp đăng nhập trong phần Xác thực Firebase để bật đăng nhập Email / Mật khẩu và bất kỳ nhà cung cấp danh tính nào khác mà bạn muốn cho ứng dụng của mình.
(Tùy chọn) Nguyên mẫu và thử nghiệm với Firebase Local Emulator Suite
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 bộ công cụ bạn có thể sử dụng để tạo mẫu và thử nghiệm chức năng Xác thực: Firebase Local Emulator Suite. Nếu bạn đang quyết định giữa các kỹ thuật xác thực và nhà cung cấp, hãy 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 Quy tắc xác thực và bảo mật Firebase hoặc tạo mẫu 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 cần triển khai dịch vụ trực tiếp có thể là một ý tưởng tuyệt vời .
Trình giả lập Authentication là một phần của Local Emulator Suite, 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, cũng như tùy chọn các tài nguyên dự án được mô phỏng của bạn (các chức năng, cơ sở dữ liệu khác và quy tắc bảo mật).
Sử dụng trình giả lập Xác thực chỉ bao gồm một vài bước:
- Thêm một dòng mã vào cấu hình thử nghiệm của ứng dụng để kết nối với trình giả lập.
- Từ thư mục gốc của thư mục dự án cục bộ của bạn, chạy
firebase emulators:start
. - Sử dụng Giao diện người dùng Bộ mô phỏng cục bộ để tạo mẫu tương tác hoặc API REST của trình mô phỏng xác thực để thử nghiệm không tương tác.
Hướng dẫn chi tiết có sẵn tại Kết nối ứng dụng của bạn với trình giả lập Xác thực . Để biết thêm thông tin, hãy xem phần giới thiệu Local Emulator Suite .
Bây giờ chúng ta 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
Khai báo một phiên bản của
FirebaseAuth
.Java
private FirebaseAuth mAuth;
Kotlin+KTX
private lateinit var auth: FirebaseAuth
Trong phương thức
onCreate()
, khởi tạo phiên bảnFirebaseAuth
.Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin+KTX
// Initialize Firebase Auth auth = Firebase.auth
Khi khởi chạy Hoạt động của bạn, hãy kiểm tra xem người dùng hiện đã đăng nhập hay chưa.
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(); } }
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(); } }
Đăng ký người dùng mới
Tạo một phương thức createAccount
mới sử dụng địa chỉ email và mật khẩu, xác thực chúng, sau đó tạo người dùng mới bằng phương thức createUserWithEmailAndPassword
.
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); } } });
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) } }
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 phương thức mới này khi nó được gửi. Bạn có thể xem một ví dụ trong mẫu bắt đầu nhanh của chúng tôi.
Đăng nhập người dùng hiện có
Tạo một phương thức signIn
mới sử dụng địa chỉ email và mật khẩu, xác thực chúng, sau đó đăng nhập người dùng bằng phương thức signInWithEmailAndPassword
.
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); } } });
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) } }
Thêm biểu mẫu để đăng nhập người dùng bằng email và mật khẩu của họ và gọi phương thức mới này khi nó được gửi. Bạn có thể xem một ví dụ trong mẫu bắt đầu nhanh của chúng tôi.
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ọ bất kỳ lúc nào bằng phương thức getCurrentUser
.
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(); }
Kotlin+KTX
val user = Firebase.auth.currentUser user?.let { // Name, email address, and profile photo Url val name = user.displayName val email = user.email val photoUrl = user.photoUrl // Check if user's email is verified val 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.getToken() instead. val uid = user.uid }
Bước tiếp theo
Khám phá các hướng dẫn về cách thêm các dịch vụ nhận dạng và xác thực khác:
,Kết nối ứng dụng của bạn với Firebase
Nếu bạn chưa có, hãy thêm Firebase vào dự án Android của bạn .
Thêm Xác thực Firebase vào ứng dụng của bạn
Sử dụng Firebase Android BoM , khai báo phần phụ thuộc cho thư viện Android Xác thực Firebase trong tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường làapp/build.gradle
). Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.2.0') // Declare 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 Firebase Android.
(Thay thế) Khai báo các phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu bạn chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.
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ự khuyên 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 { // Declare 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:21.0.6' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.2.0') // Declare 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-ktx' }
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 Firebase Android.
(Thay thế) Khai báo các phụ thuộc thư viện Firebase mà không cần sử dụng BoM
Nếu bạn chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.
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ự khuyên 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 { // Declare 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-ktx:21.0.6' }
Để sử dụng nhà cung cấp xác thực, bạn cần bật nó trong bảng điều khiển Firebase . Truy cập trang Phương pháp đăng nhập trong phần Xác thực Firebase để bật đăng nhập Email / Mật khẩu và bất kỳ nhà cung cấp danh tính nào khác mà bạn muốn cho ứng dụng của mình.
(Tùy chọn) Nguyên mẫu và thử nghiệm với Firebase Local Emulator Suite
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 bộ công cụ bạn có thể sử dụng để tạo mẫu và thử nghiệm chức năng Xác thực: Firebase Local Emulator Suite. Nếu bạn đang quyết định giữa các kỹ thuật xác thực và nhà cung cấp, hãy 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 Quy tắc xác thực và bảo mật Firebase hoặc tạo mẫu 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 cần triển khai dịch vụ trực tiếp có thể là một ý tưởng tuyệt vời .
Trình giả lập Authentication là một phần của Local Emulator Suite, 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, cũng như tùy chọn các tài nguyên dự án được mô phỏng của bạn (các chức năng, cơ sở dữ liệu khác và quy tắc bảo mật).
Sử dụng trình giả lập Xác thực chỉ bao gồm một vài bước:
- Thêm một dòng mã vào cấu hình thử nghiệm của ứng dụng để kết nối với trình giả lập.
- Từ thư mục gốc của thư mục dự án cục bộ của bạn, chạy
firebase emulators:start
. - Sử dụng Giao diện người dùng Bộ mô phỏng cục bộ để tạo mẫu tương tác hoặc API REST của trình mô phỏng xác thực để thử nghiệm không tương tác.
Hướng dẫn chi tiết có sẵn tại Kết nối ứng dụng của bạn với trình giả lập Xác thực . Để biết thêm thông tin, hãy xem phần giới thiệu Local Emulator Suite .
Bây giờ chúng ta 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
Khai báo một phiên bản của
FirebaseAuth
.Java
private FirebaseAuth mAuth;
Kotlin+KTX
private lateinit var auth: FirebaseAuth
Trong phương thức
onCreate()
, khởi tạo phiên bảnFirebaseAuth
.Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin+KTX
// Initialize Firebase Auth auth = Firebase.auth
Khi khởi chạy Hoạt động của bạn, hãy kiểm tra xem người dùng hiện đã đăng nhập hay chưa.
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(); } }
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(); } }
Đăng ký người dùng mới
Tạo một phương thức createAccount
mới sử dụng địa chỉ email và mật khẩu, xác thực chúng, sau đó tạo người dùng mới bằng phương thức createUserWithEmailAndPassword
.
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); } } });
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) } }
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 phương thức mới này khi nó được gửi. Bạn có thể xem một ví dụ trong mẫu bắt đầu nhanh của chúng tôi.
Đăng nhập người dùng hiện có
Tạo một phương thức signIn
mới sử dụng địa chỉ email và mật khẩu, xác thực chúng, sau đó đăng nhập người dùng bằng phương thức signInWithEmailAndPassword
.
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); } } });
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) } }
Thêm biểu mẫu để đăng nhập người dùng bằng email và mật khẩu của họ và gọi phương thức mới này khi nó được gửi. Bạn có thể xem một ví dụ trong mẫu bắt đầu nhanh của chúng tôi.
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ọ bất kỳ lúc nào bằng phương thức getCurrentUser
.
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(); }
Kotlin+KTX
val user = Firebase.auth.currentUser user?.let { // Name, email address, and profile photo Url val name = user.displayName val email = user.email val photoUrl = user.photoUrl // Check if user's email is verified val 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.getToken() instead. val uid = user.uid }
Bước tiếp theo
Khám phá các hướng dẫn về cách thêm các dịch vụ nhận dạng và xác thực khác: