我试图为我的 android 应用程序实现状态持久性,以便用户保持登录状态,但我无法理解文档,所以我跑到这里寻求帮助。
这是代码片段:
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(function() {
// Existing and future Auth states are now persisted in the current
// session only. Closing the window would clear any existing state even
// if a user forgets to sign out.
// ...
// New sign-in will be persisted with session persistence.
return firebase.auth().signInWithEmailAndPassword(email, password);
})
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
});
我已经尝试了很多东西,但我不太明白它们在哪里实例化firebase
变量。
在文档中有这一行:
这将更改指定身份验证上的持久性类型 当前保存的身份验证会话的实例,并应用此类型的 未来登录请求的持久性
但是我仍然无法完全了解哪个身份验证实例,我正在使用FirebaseAuth UI。
这是我的一些代码:
private fun showSignInOptions() {
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN
)
}
// FirebaseUI Auth code.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RC_SIGN_IN) {
val response = IdpResponse.fromResultIntent(data)
if (resultCode == Activity.RESULT_OK) {
// Successfully signed in
val user = FirebaseAuth.getInstance().currentUser
Log.d("AUTH", "Sign in SUCCESSFUL. $user")
// ...
} else {
Log.d("AUTH", "Sign in failed.")
// Sign in failed. If response is null the user canceled the
// sign-in flow using the back button. Otherwise check
// response.getError().getErrorCode() and handle the error.
// ...
}
}
}
我在onCreate()
打电话给showSignInOptions()
.
提前感谢您的帮助:D
正确理解您的问题,您希望让您的用户保持登录状态,而不是要求他们登录。如果是这种情况,您需要做的就是检查是否
FirebaseAuth.getInstance().currentUser
返回空值。如果它返回空值,您可以初始化FirebaseAuthUI以使其登录。因此,最终产品应类似于以下代码片段:
val mUser = FirebaseAuth.getInstance().currentUser
mUser?.let{
//do your stuff here
} ?: showSignInOptions()