我使用SharedPreferences来保持登录,它是有效的,但当我将其与Firebase一起使用时,代码不起作用,我不知道Firebase共享偏好是否不适用于保持登录,或者我应该做什么,我是安卓工作室的新手,我在youtube中搜索,但我找不到如何使用Kotlin 保持Firebase登录
增加了代码样本
对于Firebase:
logInButton.setOnClickListener {
if(emailEditText.text.isNotEmpty() && passwordEditText.text.isNotEmpty()){
FirebaseAuth.getInstance()
.signInWithEmailAndPassword(emailEditText.text.toString()
,passwordEditText.text.toString()).addOnCompleteListener {
if(it.isSuccessful){
showHome(it.result?.user?.email?:"",ProviderType.BASIC)
}else{
showAlert()
}
}
}
}
private fun showAlert(){
val builder= AlertDialog.Builder(this)
builder.setTitle("Error")
builder.setMessage("Error")
builder.setPositiveButton("Accept",null)
val dialog:AlertDialog=builder.create()
dialog.show()
}
private fun showHome(email:String,provider:ProviderType){
val homeIntent= Intent(this,Menu::class.java).apply{
putExtra("email",email)
putExtra("provider",provider.name)
}
startActivity(homeIntent)
}
对于共享偏好
private lateinit var sharedPreferences: SharedPreferences
var isRemember=false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
sharedPreferences = getSharedPreferences("SHARED_PREF", Context.MODE_PRIVATE)
isRemember=sharedPreferences.getBoolean("CHECKBOX",false )
if (isRemember){
val intent= Intent(this,Menu::class.java)
startActivity(intent)
finish()
}
fun checkUserValues(){
}
logInButton.setOnClickListener {
val email: String =emailEditText.text.toString()
val password: String = passwordEditText.text.toString()
val checked:Boolean = check_remember.isChecked
val editor : SharedPreferences.Editor = sharedPreferences.edit()
editor.putString("EMAIL",email)
editor.putString("PASSWORD",password)
editor.putBoolean("CHECKBOX",checked)
editor.apply()
Toast.makeText(this, "Logged in save",Toast.LENGTH_LONG).show()
val intent=Intent(this,Menu::class.java)
startActivity(intent)
finish()
}
}
非常感谢。
我使用共享的首选项来保持登录,
Firebase已经存储了用户凭据,并在用户重新启动应用程序时将其恢复。你不需要为此编写代码,因为当用户第一次登录时,会自动保存数据,然后当用户再次启动应用程序时,信息会被恢复。
我建议删除将凭据保存到共享首选项的代码,并将其留给Firebase。