所以我设置了电子邮件/密码注册并登录。
这很有效。我以为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)
}}
}
答案 0 :(得分:4)
Firebase身份验证会自动记住身份验证状态,因此用户在重新启动应用时仍会进行身份验证。
但是,如果您的LoginActivity
是启动器活动,那么您仍然会参与此活动,因此您需要检查用户是否在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
是启动器活动,然后只有在用户未登录时才显示您的LoginActivity
。
答案 1 :(得分:0)
如果有人为了使用Java实现相同目的而登陆这里,请使用以下代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
// User is signed in (getCurrentUser() will be null if not signed in)
Intent intent = Intent(this, MainActivity::class.java);
startActivity(intent);
finish();
// or do some other stuff that you want to do
}