我正在尝试自动登录FirebaseAuth,但这不起作用 . 当用户输入电子邮件/密码并检查“记住我”时,我想保存令牌以便在下次登录时使用(自动) .
我不知道是否将令牌保存在onAuthStateChanged(FirebaseAuth.AuthStateListener())或onComplete(signInWithEmailAndPassword)中 .
所以,应用程序保持这样:
prefs = getActivity().getSharedPreferences("quinta", Context.MODE_PRIVATE);
editor = prefs.edit();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
user = firebaseAuth.getCurrentUser();
if ( user != null ) {
Log.i(TAG,"User: " + user.getDisplayName() + ", " + user.getEmail() + " Sign In");
String token = user.getToken(true).toString();
editor.putString("token",token);
editor.commit();
} else {
Log.i(TAG,"User: " + user.getDisplayName() + " Sign Out");
}
}
};
所以,当应用程序打开时,我尝试登录:
if( prefs.getString("token","aa").length() > 2 ) {
Log.i(TAG,prefs.getString("token","aa"));
mAuth.signInWithCustomToken(prefs.getString("token",""));
}
是的,在Log I中检查prefs.getString(“token”,“”)是否包含令牌!最后,我重新打开应用程序,并收到以下错误:
I/AuthChimeraService: Error description received from server: {
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "INVALID_CUSTOM_TOKEN"
}
],
"code": 400,
"message": "INVALID_CUSTOM_TOKEN"
}
}