Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Xác thực với Firebase trên Android bằng Số điện thoại

Bạn có thể sử dụng Xác thực Firebase để đăng nhập người dùng bằng cách gửi tin nhắn SMS đến điện thoại của người dùng. Người dùng đăng nhập bằng mã một lần có trong tin nhắn SMS.

Cách dễ nhất để thêm đăng nhập bằng số điện thoại vào ứng dụng của bạn là sử dụng FirebaseUI , bao gồm tiện ích con đăng nhập thả xuống triển khai các quy trình đăng nhập cho đăng nhập bằng số điện thoại, cũng như đăng nhập dựa trên mật khẩu và liên kết -trong. Tài liệu này mô tả cách triển khai quy trình đăng nhập số điện thoại bằng SDK Firebase.

Trước khi bắt đầu

  1. Nếu bạn chưa có, hãy thêm Firebase vào dự án Android của bạn .
  2. Trong dự án cấp của bạn build.gradle tập tin, hãy chắc chắn để bao gồm kho Maven của Google trong cả hai bạn buildscriptallprojects phần.
  3. Thêm phần phụ thuộc cho thư viện Android Xác thực Firebase vào tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là app/build.gradle ):
    implementation 'com.google.firebase:firebase-auth:19.4.0'
  4. Nếu bạn chưa kết nối ứng dụng của mình với dự án Firebase, hãy làm như vậy từ bảng điều khiển Firebase .
  5. Nếu bạn chưa đặt hàm băm SHA-1 cho ứng dụng của mình trong bảng điều khiển Firebase , hãy làm như vậy. Xem Xác thực khách hàng của bạn để biết thông tin về cách tìm hàm băm SHA-1 cho ứng dụng của bạn.

Ngoài ra, hãy lưu ý rằng đăng nhập bằng số điện thoại yêu cầu thiết bị thực và sẽ không hoạt động trên trình giả lập.

Lo ngại về bảo mật

Việc xác thực chỉ bằng một số điện thoại, mặc dù thuận tiện, nhưng lại kém an toàn hơn các phương pháp hiện có khác, vì việc sở hữu một số điện thoại có thể dễ dàng được chuyển giữa những người dùng. Ngoài ra, trên các thiết bị có nhiều hồ sơ người dùng, bất kỳ người dùng nào có thể nhận tin nhắn SMS đều có thể đăng nhập vào tài khoản bằng số điện thoại của thiết bị.

Nếu bạn sử dụng đăng nhập dựa trên số điện thoại trong ứng dụng của mình, bạn nên cung cấp tính năng này cùng với các phương pháp đăng nhập an toàn hơn và thông báo cho người dùng về sự cân bằng bảo mật của việc sử dụng đăng nhập bằng số điện thoại.

Bật đăng nhập bằng Số điện thoại cho dự án Firebase của bạn

Để đăng nhập người dùng bằng SMS, trước tiên bạn phải bật phương thức đăng nhập Số điện thoại cho dự án Firebase của mình:

  1. Trong bảng điều khiển Firebase , hãy mở phần Xác thực .
  2. Trên trang Phương pháp đăng nhập, hãy bật phương thức đăng nhập Số điện thoại .

Hạn ngạch yêu cầu đăng nhập số điện thoại của Firebase đủ cao để hầu hết các ứng dụng sẽ không bị ảnh hưởng. Tuy nhiên, nếu bạn cần đăng nhập một lượng lớn người dùng bằng xác thực điện thoại, bạn có thể cần nâng cấp gói giá của mình. Xem trang giá cả .

Gửi mã xác minh đến điện thoại của người dùng

Để bắt đầu đăng nhập số điện thoại, hãy cung cấp cho người dùng một giao diện nhắc họ nhập số điện thoại của mình. Các yêu cầu pháp lý khác nhau, nhưng là phương pháp hay nhất và để đặt kỳ vọng cho người dùng của bạn, bạn nên thông báo cho họ biết rằng nếu họ sử dụng đăng nhập bằng điện thoại, họ có thể nhận được tin nhắn SMS để xác minh và áp dụng mức phí tiêu chuẩn.

Sau đó, chuyển số điện thoại của họ đến phương thức PhoneAuthProvider.verifyPhoneNumber để yêu cầu Firebase xác minh số điện thoại của người dùng. Ví dụ:

Java

PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNumber,        // Phone number to verify
        60,                 // Timeout duration
        TimeUnit.SECONDS,   // Unit of timeout
        this,               // Activity (for callback binding)
        mCallbacks);        // OnVerificationStateChangedCallbacks

Kotlin + KTX

PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNumber, // Phone number to verify
        60, // Timeout duration
        TimeUnit.SECONDS, // Unit of timeout
        this, // Activity (for callback binding)
        callbacks) // OnVerificationStateChangedCallbacks

Phương thức verifyPhoneNumber được sử dụng lại: nếu bạn gọi nó nhiều lần, chẳng hạn như trong phương thức onStart của một hoạt động, phương thức verifyPhoneNumber sẽ không gửi SMS thứ hai trừ khi hết thời gian yêu cầu ban đầu.

Bạn có thể sử dụng hành vi này để tiếp tục quá trình đăng nhập số điện thoại nếu ứng dụng của bạn đóng trước khi người dùng có thể đăng nhập (ví dụ: khi người dùng đang sử dụng ứng dụng SMS của họ). Sau khi bạn gọi verifyPhoneNumber , hãy đặt cờ cho biết đang tiến hành xác minh. Sau đó, lưu cờ trong phương thức onSaveInstanceState của onSaveInstanceState và khôi phục cờ trong onRestoreInstanceState . Cuối cùng, trong phương pháp onStart của Activity, hãy kiểm tra xem quá trình xác minh đã được tiến hành chưa và nếu có, hãy gọi lại verifyPhoneNumber . Đảm bảo xóa cờ khi xác minh hoàn tất hoặc không thành công (xem phần gọi lại Xác minh ).

Để dễ dàng xử lý xoay màn hình và các trường hợp khởi động lại Hoạt động khác, hãy chuyển Hoạt động của bạn sang phương thức verifyPhoneNumber . Các lệnh gọi lại sẽ tự động tách ra khi Hoạt động dừng lại, vì vậy bạn có thể thoải mái viết mã chuyển đổi giao diện người dùng trong các phương thức gọi lại.

Tin nhắn SMS do Firebase gửi cũng có thể được bản địa hóa bằng cách chỉ định ngôn ngữ xác thực thông qua phương thức setLanguageCode trên phiên bản Auth của bạn.

Java

auth.setLanguageCode("fr");
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage();

Kotlin + KTX

auth.setLanguageCode("fr")
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage()

Khi bạn gọi PhoneAuthProvider.verifyPhoneNumber , bạn cũng phải cung cấp một phiên bản của OnVerificationStateChangedCallbacks , chứa các triển khai của các hàm gọi lại xử lý kết quả của yêu cầu. Ví dụ:

Java

mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    @Override
    public void onVerificationCompleted(PhoneAuthCredential credential) {
        // This callback will be invoked in two situations:
        // 1 - Instant verification. In some cases the phone number can be instantly
        //     verified without needing to send or enter a verification code.
        // 2 - Auto-retrieval. On some devices Google Play services can automatically
        //     detect the incoming verification SMS and perform verification without
        //     user action.
        Log.d(TAG, "onVerificationCompleted:" + credential);

        signInWithPhoneAuthCredential(credential);
    }

    @Override
    public void onVerificationFailed(FirebaseException e) {
        // This callback is invoked in an invalid request for verification is made,
        // for instance if the the phone number format is not valid.
        Log.w(TAG, "onVerificationFailed", e);

        if (e instanceof FirebaseAuthInvalidCredentialsException) {
            // Invalid request
            // ...
        } else if (e instanceof FirebaseTooManyRequestsException) {
            // The SMS quota for the project has been exceeded
            // ...
        }

        // Show a message and update the UI
        // ...
    }

    @Override
    public void onCodeSent(@NonNull String verificationId,
                           @NonNull PhoneAuthProvider.ForceResendingToken token) {
        // The SMS verification code has been sent to the provided phone number, we
        // now need to ask the user to enter the code and then construct a credential
        // by combining the code with a verification ID.
        Log.d(TAG, "onCodeSent:" + verificationId);

        // Save verification ID and resending token so we can use them later
        mVerificationId = verificationId;
        mResendToken = token;

        // ...
    }
};

Kotlin + KTX

callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    override fun onVerificationCompleted(credential: PhoneAuthCredential) {
        // This callback will be invoked in two situations:
        // 1 - Instant verification. In some cases the phone number can be instantly
        //     verified without needing to send or enter a verification code.
        // 2 - Auto-retrieval. On some devices Google Play services can automatically
        //     detect the incoming verification SMS and perform verification without
        //     user action.
        Log.d(TAG, "onVerificationCompleted:$credential")

        signInWithPhoneAuthCredential(credential)
    }

    override fun onVerificationFailed(e: FirebaseException) {
        // This callback is invoked in an invalid request for verification is made,
        // for instance if the the phone number format is not valid.
        Log.w(TAG, "onVerificationFailed", e)

        if (e is FirebaseAuthInvalidCredentialsException) {
            // Invalid request
            // ...
        } else if (e is FirebaseTooManyRequestsException) {
            // The SMS quota for the project has been exceeded
            // ...
        }

        // Show a message and update the UI
        // ...
    }

    override fun onCodeSent(
        verificationId: String,
        token: PhoneAuthProvider.ForceResendingToken
    ) {
        // The SMS verification code has been sent to the provided phone number, we
        // now need to ask the user to enter the code and then construct a credential
        // by combining the code with a verification ID.
        Log.d(TAG, "onCodeSent:$verificationId")

        // Save verification ID and resending token so we can use them later
        storedVerificationId = verificationId
        resendToken = token

        // ...
    }
}

Gọi lại xác minh

Trong hầu hết các ứng dụng, bạn triển khai các onCodeSent gọi lại onVerificationCompleted , onVerificationFailedonCodeSent . Bạn cũng có thể triển khai onCodeAutoRetrievalTimeOut , tùy thuộc vào yêu cầu của ứng dụng của bạn.

onVerificationCompleted (PhoneAuthCredential)

Phương pháp này được gọi trong hai trường hợp:

  • Xác minh tức thì: trong một số trường hợp, số điện thoại có thể được xác minh ngay lập tức mà không cần gửi hoặc nhập mã xác minh.
  • Tự động truy xuất: trên một số thiết bị, các dịch vụ của Google Play có thể tự động phát hiện SMS xác minh đến và thực hiện xác minh mà không cần người dùng thực hiện. (Khả năng này có thể không khả dụng với một số nhà mạng.)
Trong cả hai trường hợp, số điện thoại của người dùng đã được xác minh thành công và bạn có thể sử dụng đối tượng PhoneAuthCredential được chuyển đến cuộc gọi lại để đăng nhập người dùng .

onVerificationFailed (FirebaseException)

Phương thức này được gọi để phản hồi lại một yêu cầu xác minh không hợp lệ, chẳng hạn như một yêu cầu chỉ định số điện thoại hoặc mã xác minh không hợp lệ.

onCodeSent (String verifyId, PhoneAuthProvider.ForceResendingToken)

Không bắt buộc. Phương thức này được gọi sau khi mã xác minh đã được gửi bằng SMS đến số điện thoại được cung cấp.

Khi phương thức này được gọi, hầu hết các ứng dụng đều hiển thị giao diện người dùng nhắc người dùng nhập mã xác minh từ tin nhắn SMS. (Đồng thời, quá trình xác minh tự động có thể đang diễn ra trong nền.) Sau đó, sau khi người dùng nhập mã xác minh, bạn có thể sử dụng mã xác minh và ID xác minh đã được chuyển cho phương thức này để tạo đối tượng PhoneAuthCredential , bạn có thể lần lượt sử dụng để đăng nhập người dùng. Tuy nhiên, một số ứng dụng có thể đợi cho đến khi onCodeAutoRetrievalTimeOut được gọi trước khi hiển thị giao diện người dùng mã xác minh (không được khuyến nghị).

onCodeAutoRetrievalTimeOut (Chuỗi xác minhId)

Không bắt buộc. Phương thức này được gọi sau khi khoảng thời gian chờ được chỉ định để xác verifyPhoneNumber đã trôi qua mà không kích hoạt onVerificationCompleted trước. Trên các thiết bị không có thẻ SIM, phương pháp này được gọi ngay lập tức vì không thể tự động truy xuất SMS.

Một số ứng dụng chặn thông tin nhập của người dùng cho đến khi hết thời gian tự động xác minh và sau đó chỉ hiển thị giao diện người dùng nhắc người dùng nhập mã xác minh từ tin nhắn SMS (không được khuyến nghị).

Tạo đối tượng PhoneAuthCredential

Sau khi người dùng nhập mã xác nhận rằng căn cứ hỏa lực gửi đến điện thoại của người dùng, tạo ra một PhoneAuthCredential đối tượng, sử dụng mã xác minh và ID xác minh đã được thông qua với onCodeSent hoặc onCodeAutoRetrievalTimeOut gọi lại. (Khi onVerificationCompleted được gọi, bạn sẽ nhận được một đối tượng PhoneAuthCredential trực tiếp, vì vậy bạn có thể bỏ qua bước này.)

Để tạo đối tượng PhoneAuthCredential , hãy gọi PhoneAuthProvider.getCredential :

Java

PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);

Kotlin + KTX

val credential = PhoneAuthProvider.getCredential(verificationId!!, code)

Đăng nhập người dùng

Sau khi bạn nhận được đối tượng PhoneAuthCredential , cho dù là trong onVerificationCompleted gọi lại onVerificationCompleted hay bằng cách gọi PhoneAuthProvider.getCredential , hãy hoàn tất quy trình đăng nhập bằng cách chuyển đối tượng PhoneAuthCredential tới FirebaseAuth.signInWithCredential :

Java

private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
    mAuth.signInWithCredential(credential)
            .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, "signInWithCredential:success");

                        FirebaseUser user = task.getResult().getUser();
                        // ...
                    } else {
                        // Sign in failed, display a message and update the UI
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
                            // The verification code entered was invalid
                        }
                    }
                }
            });
}

Kotlin + KTX

private fun signInWithPhoneAuthCredential(credential: PhoneAuthCredential) {
    auth.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInWithCredential:success")

                    val user = task.result?.user
                    // ...
                } else {
                    // Sign in failed, display a message and update the UI
                    Log.w(TAG, "signInWithCredential:failure", task.exception)
                    if (task.exception is FirebaseAuthInvalidCredentialsException) {
                        // The verification code entered was invalid
                    }
                }
            }
}

Kiểm tra với các số điện thoại có trong danh sách cho phép

Bạn có thể đưa các số điện thoại vào danh sách trắng để phát triển thông qua bảng điều khiển Firebase. Việc đưa số điện thoại vào danh sách trắng mang lại những lợi ích sau:

  • Kiểm tra xác thực số điện thoại mà không tiêu tốn hạn ngạch sử dụng của bạn.
  • Kiểm tra xác thực số điện thoại mà không cần gửi tin nhắn SMS thực tế.
  • Chạy các thử nghiệm liên tiếp với cùng một số điện thoại mà không bị hạn chế. Điều này giảm thiểu nguy cơ bị từ chối trong quá trình đánh giá App Store nếu người đánh giá tình cờ sử dụng cùng một số điện thoại để thử nghiệm.
  • Kiểm tra dễ dàng trong môi trường phát triển mà không cần nỗ lực thêm, chẳng hạn như khả năng phát triển trong trình mô phỏng iOS hoặc trình mô phỏng Android mà không cần Dịch vụ của Google Play.
  • Viết kiểm tra tích hợp mà không bị chặn bởi kiểm tra bảo mật thường được áp dụng trên số điện thoại thực trong môi trường sản xuất.

Các số điện thoại vào danh sách trắng phải đáp ứng các yêu cầu sau:

  1. Đảm bảo rằng bạn sử dụng những con số hư cấu chưa tồn tại. Xác thực Firebase không cho phép bạn đưa vào danh sách trắng các số điện thoại hiện có được người dùng thực sử dụng. Một tùy chọn là sử dụng 555 số có tiền tố làm số điện thoại thử nghiệm của Hoa Kỳ, ví dụ: +1 650-555-3434
  2. Số điện thoại phải được định dạng chính xác về độ dài và các ràng buộc khác. Họ vẫn sẽ trải qua quá trình xác thực giống như số điện thoại của người dùng thực.
  3. Bạn có thể thêm tối đa 10 số điện thoại để phát triển.
  4. Sử dụng các số / mã điện thoại kiểm tra khó đoán và thường xuyên thay đổi các số / mã đó.

Danh sách trắng các số điện thoại và mã xác minh

  1. Trong bảng điều khiển Firebase , hãy mở phần Xác thực .
  2. Trong tab Phương thức đăng nhập , hãy bật Nhà cung cấp điện thoại nếu bạn chưa bật.
  3. Mở menu Số điện thoại để thử nghiệm đàn accordion.
  4. Cung cấp số điện thoại bạn muốn kiểm tra, ví dụ: +1 650-555-3434 .
  5. Cung cấp mã xác minh gồm 6 chữ số cho số cụ thể đó, ví dụ: 654321 .
  6. Thêm số. Nếu có nhu cầu, bạn có thể xóa số điện thoại và mã của nó bằng cách di chuột qua hàng tương ứng và nhấp vào biểu tượng thùng rác.

Kiểm tra bằng tay

Bạn có thể trực tiếp bắt đầu sử dụng số điện thoại có trong danh sách trắng trong ứng dụng của mình. Điều này cho phép bạn thực hiện kiểm tra thủ công trong các giai đoạn phát triển mà không gặp phải các vấn đề về hạn ngạch hoặc điều chỉnh. Bạn cũng có thể kiểm tra trực tiếp từ trình mô phỏng iOS hoặc trình mô phỏng Android mà không cần cài đặt Dịch vụ của Google Play.

Khi bạn cung cấp số điện thoại trong danh sách trắng và gửi mã xác minh, không có tin nhắn SMS thực tế nào được gửi. Thay vào đó, bạn cần cung cấp mã xác minh đã định cấu hình trước đó để hoàn tất quá trình đăng nhập.

Khi hoàn tất đăng nhập, người dùng Firebase được tạo bằng số điện thoại đó. Người dùng có hành vi và thuộc tính giống như người dùng số điện thoại thực và có thể truy cập Cơ sở dữ liệu thời gian thực / Cloud Firestore và các dịch vụ khác theo cách tương tự. Mã thông báo ID được tạo trong quá trình này có chữ ký giống như người dùng số điện thoại thực.

Một tùy chọn khác là đặt vai trò kiểm tra thông qua xác nhận quyền sở hữu tùy chỉnh đối với những người dùng này để phân biệt họ là người dùng giả mạo nếu bạn muốn hạn chế thêm quyền truy cập.

Thử nghiệm hội nhập

Ngoài kiểm tra thủ công, Xác thực Firebase cung cấp các API để giúp viết các bài kiểm tra tích hợp cho kiểm tra xác thực điện thoại. Các API này vô hiệu hóa xác minh ứng dụng bằng cách tắt yêu cầu reCAPTCHA trong web và thông báo đẩy im lặng trong iOS. Điều này làm cho việc kiểm tra tự động hóa có thể thực hiện được trong các luồng này và dễ thực hiện hơn. Ngoài ra, chúng còn giúp cung cấp khả năng kiểm tra các luồng xác minh tức thì trên Android.

Trên Android, bạn có thể dễ dàng sử dụng các số điện thoại trong danh sách cho phép của mình mà không cần bất kỳ lệnh gọi API bổ sung nào. Gọi điện thoại verifyPhoneNumber với một số trong danh sách trắng sẽ kích hoạt cuộc gọi lại onCodeSent , trong đó bạn sẽ cần cung cấp mã xác minh tương ứng. Điều này cho phép thử nghiệm trong Trình giả lập Android.

Java

String phoneNum = "+16505554567";
String testVerificationCode = "123456";

// Whenever verification is triggered with the whitelisted number,
// provided it is not set for auto-retrieval, onCodeSent will be triggered.
PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNum, 30L /*timeout*/, TimeUnit.SECONDS,
        this, new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

            @Override
            public void onCodeSent(String verificationId,
                                   PhoneAuthProvider.ForceResendingToken forceResendingToken) {
                // Save the verification id somewhere
                // ...

                // The corresponding whitelisted code above should be used to complete sign-in.
                MainActivity.this.enableUserManuallyInputCode();
            }

            @Override
            public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
                // Sign in with the credential
                // ...
            }

            @Override
            public void onVerificationFailed(FirebaseException e) {
                 // ...
            }

        });

Kotlin + KTX

val phoneNum = "+16505554567"
val testVerificationCode = "123456"

// Whenever verification is triggered with the whitelisted number,
// provided it is not set for auto-retrieval, onCodeSent will be triggered.
PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNum, 30L /*timeout*/, TimeUnit.SECONDS,
        this, object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    override fun onCodeSent(
        verificationId: String,
        forceResendingToken: PhoneAuthProvider.ForceResendingToken
    ) {
        // Save the verification id somewhere
        // ...

        // The corresponding whitelisted code above should be used to complete sign-in.
        this@MainActivity.enableUserManuallyInputCode()
    }

    override fun onVerificationCompleted(phoneAuthCredential: PhoneAuthCredential) {
        // Sign in with the credential
        // ...
    }

    override fun onVerificationFailed(e: FirebaseException) {
        // ...
    }
})

Ngoài ra, bạn có thể kiểm tra các luồng tự động truy xuất trong Android bằng cách đặt số trong danh sách trắng và mã xác minh tương ứng của nó để tự động truy xuất bằng cách gọi setAutoRetrievedSmsCodeForPhoneNumber .

Khi verifyPhoneNumber được gọi, nó gây nên onVerificationCompleted với PhoneAuthCredential trực tiếp. Điều này chỉ hoạt động với các số điện thoại có trong danh sách trắng.

Đảm bảo rằng tính năng này bị tắt và không có số điện thoại nào trong danh sách trắng được mã hóa cứng trong ứng dụng của bạn khi xuất bản ứng dụng của bạn lên cửa hàng Google Play.

Java

// The test phone number and code should be whitelisted in the console.
String phoneNumber = "+16505554567";
String smsCode = "123456";

FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseAuthSettings firebaseAuthSettings = firebaseAuth.getFirebaseAuthSettings();

// Configure faking the auto-retrieval with the whitelisted numbers.
firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode);

PhoneAuthProvider phoneAuthProvider = PhoneAuthProvider.getInstance();
phoneAuthProvider.verifyPhoneNumber(
        phoneNumber,
        60L,
        TimeUnit.SECONDS,
        this, /* activity */
        new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            @Override
            public void onVerificationCompleted(PhoneAuthCredential credential) {
                // Instant verification is applied and a credential is directly returned.
                // ...
            }

            // ...
        });

Kotlin + KTX

// The test phone number and code should be whitelisted in the console.
val phoneNumber = "+16505554567"
val smsCode = "123456"

val firebaseAuth = Firebase.auth
val firebaseAuthSettings = firebaseAuth.firebaseAuthSettings

// Configure faking the auto-retrieval with the whitelisted numbers.
firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode)

val phoneAuthProvider = PhoneAuthProvider.getInstance()
phoneAuthProvider.verifyPhoneNumber(
        phoneNumber,
        60L,
        TimeUnit.SECONDS,
        this, /* activity */
        object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            override fun onVerificationCompleted(credential: PhoneAuthCredential) {
                // Instant verification is applied and a credential is directly returned.
                // ...
            }

            // ...
        })

Bước tiếp theo

Sau khi người dùng đăng nhập lần đầu tiên, tài khoản người dùng mới sẽ được tạo và liên kết với thông tin đăng nhập — nghĩa là tên người dùng và mật khẩu, số điện thoại hoặc thông tin nhà cung cấp xác thực — người dùng đã đăng nhập bằng. Tài khoản mới này được lưu trữ như một phần của dự án Firebase của bạn và có thể được sử dụng để xác định người dùng trên mọi ứng dụng trong dự án của bạn, bất kể người dùng đăng nhập bằng cách nào.

  • Trong ứng dụng của mình, bạn có thể lấy thông tin hồ sơ cơ bản của người dùng từ đối tượng FirebaseUser . Xem Quản lý người dùng .

  • Trong Cơ sở dữ liệu thời gian thực Firebase và Quy tắc bảo mật lưu trữ đám mây, bạn có thể lấy ID người dùng duy nhất của người dùng đã đăng nhập từ biến auth và sử dụng nó để kiểm soát dữ liệu nào mà người dùng có thể truy cập.

Bạn có thể cho phép người dùng đăng nhập vào ứng dụng của mình bằng nhiều nhà cung cấp xác thực bằng cách liên kết thông tin xác thực của nhà cung cấp xác thực với tài khoản người dùng hiện có.

Để đăng xuất một người dùng, hãy gọi signOut :

Java

FirebaseAuth.getInstance().signOut();

Kotlin + KTX

Firebase.auth.signOut()