所以我设置了电子邮件/密码注册和登录。
这是有效的。我以为 Firebase 会处理这个问题,但显然没有。 我希望在用户关闭应用程序后,在他们下次打开应用程序时已经登录。
缺少什么?
class LoginActivity : AppCompatActivity(){
lateinit var auth: FirebaseAuth
lateinit var user: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
auth = FirebaseAuth.getInstance()
}
fun loginLoginClicked(view: View) {
// Perform login
val email = loginEmailTxt.text.toString()
val password = loginPasswordTxt.text.toString()
auth.signInWithEmailAndPassword(email, password)
.addOnSuccessListener {
finish()
}
.addOnFailureListener { exception ->
Log.e("Exception", "Could not sign in user - ${exception.localizedMessage}")
}
val loginIntent = Intent(this, MainActivity::class.java)
startActivity(loginIntent)
}
fun loginCreateClicked(view: View) {
// segue to the create user activity
val createIntent = Intent(this, SignUpActivity::class.java)
startActivity(createIntent)
}}
}
最佳答案
Firebase 身份验证会自动记住身份验证状态,因此当应用重新启动时,用户仍将通过身份验证。
但是,如果您的 LoginActivity
是启动器 Activity ,您仍然会登陆此 Activity ,因此您需要检查用户是否已在 onCreate()
中进行身份验证| , 然后将它们重定向到您的 MainActivity
如果他们已经登录,则类似于:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
// User is signed in (getCurrentUser() will be null if not signed in)
val intent = Intent(this, MainActivity::class.java);
startActivity(intent);
finish();
}
}
这利用了 FirebaseAuth#getCurrentUser()
将返回 FirebaseUser
的方法对象,如果用户已登录,或 null
如果他们没有登录。
或者,您可以交换它,以便 MainActivity
是启动器 Activity ,然后只显示您的 LoginActivity
如果用户未登录。
....
关于android - Firebase Android 自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47285784/