gpt4 book ai didi

android - Firebase Android 自动登录

转载 作者:搜寻专家 更新时间:2023-11-01 07:44:40 26 4
gpt4 key购买 nike

所以我设置了电子邮件/密码注册和登录。

这是有效的。我以为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com