private fun login(email: String, password: String) {
val checkingDialog = Dialog(requireActivity())
checkingDialog.setContentView(R.layout.checking_progressbar)
checkingDialog.setCanceledOnTouchOutside(false)
CoroutineScope(Dispatchers.IO).launch {
withContext(Dispatchers.Main) {
// Show Checking Dialog
checkingDialog.show()
}
FirebaseAuth.getInstance().currentUser?.reload()
Log.e("a7a", "login clicked")
if (checkForEmptyInputs()) {
Log.e("a7a", "input checks login fragment tmam")
try {
// TODO lazm a8ayr kosom elsatr da 3l4an a5ls mn ksom el7war da
if (FirebaseAuth.getInstance().currentUser?.isEmailVerified == true) {
FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
.addOnCompleteListener {
checkingDialog.dismiss()
Log.e("a7a", "complete")
if (it.isSuccessful) {
Log.e("a7a", "sign in fol")
val intent = Intent(requireActivity(), MainActivity::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
CoroutineScope(Dispatchers.IO).launch {
val userDocumentId =
getUserIdByEmail(binding?.etEmailSignIn?.text.toString())
intent.putExtra("userDocumentId", userDocumentId)
intent.putExtra("userEmail",
binding?.etEmailSignIn?.text.toString())
startActivity(intent)
requireActivity().finish()
}
} else {
Log.e("a7a", it.exception?.message.toString())
lifecycleScope.launch {
withContext(Dispatchers.Main) {
binding?.tvSignInErrors?.visibility = View.VISIBLE
var errorMessage = it.exception?.message.toString()
if (errorMessage == "The password is invalid or the user does not have a password.") {
errorMessage = "Invalid Password"
}
binding?.tvSignInErrors?.text = errorMessage
}
}
}
}
} else {
Log.e("a7a", "Please Verify your Account")
withContext(Dispatchers.Main) {
checkingDialog.dismiss()
binding?.tvSignInErrors?.visibility = View.VISIBLE
binding?.tvSignInErrors?.text = getString(R.string.verifyAccount)
}
FirebaseAuth.getInstance().currentUser?.sendEmailVerification()
}
} catch (e: NullPointerException) {
withContext(Dispatchers.Main) {
binding?.tvSignInErrors?.visibility = View.VISIBLE
binding?.tvSignInErrors?.text = getString(R.string.sample_error)
}
} catch (e: Exception) {
withContext(Dispatchers.Main) {
binding?.tvSignInErrors?.visibility = View.VISIBLE
binding?.tvSignInErrors?.text = e.toString()
}
}
}
}
}
這就是我用來登錄firebase的功能當我使用創建帳戶的設備登錄時,這作業正常,但是,當我嘗試從另一臺設備登錄時,它表示該帳戶未經過驗證,并且沒有通過驗證的 if 陳述句。所以問題是,我知道這里的用戶物件不適用于新設備,所以我如何檢查特定電子郵件是否已驗證,而不是當前用戶已驗證,因為在這種情況下它是空的?
uj5u.com熱心網友回復:
只需在 onsuccess 偵聽器塊中移動用于檢查驗證的 if 塊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492820.html
上一篇:獲取Firebase檔案ID