我在使用电子邮件密码登录的Android应用程序上工作。 用户在本地sqlite db和firebase + auth。
中创建情境:用户卸载应用程序,删除本地数据库。然后用户重新安装应用程序并希望使用旧凭据登录,但用户不在本地存在,因此应用程序尝试创建新的。 - 但是我的firebase用户表+ auth。中已经存在远程用户。
问题:如何仅使用电子邮件,传递以及可能的一些附加信息来查询 firebase auth 或 firebase 以获取用户信息。
我发现的大多数答案都是指使用来自firebase的更新事件,但此时由于用户尚未通过身份验证而无法实现
答案 0 :(得分:0)
我自己解决了。
这很简单,完全没有。我的修复的一部分在下面。但总之。我从firebase获取用户,然后对firebase进行更新,然后在addValueEventListener中恢复用户(new ValueEventListener()
_fbAuth.signInWithEmailAndPassword(_email, _password).addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Firebase login success");
FirebaseUser fbUser = _fbAuth.getCurrentUser();
String uid = fbUser.getUid();
FireBaseWriteHelper wh = new FireBaseWriteHelper();
FireBaseReadHelper fireBaseReadHelper = new FireBaseReadHelper(getApplicationContext(), uid, Util.VERSION_KEY_FREE);
DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
Date date = new Date();
wh.UpdateUserLastLogIn(uid, format.format(date));
_user = _userHelper.CheckUserExist(_email, _password);
mPasswordView.setError(null);
mEmailView.setError(null);
} else {
try {
throw task.getException();
} catch (FirebaseAuthInvalidUserException e) {
} catch (FirebaseAuthInvalidCredentialsException e) {
} catch (FirebaseNetworkException e) {
} catch (Exception e) {
}
}
}
});
答案 1 :(得分:0)
您可以在离线模式下使用Firebase。您不需要使用两个数据库。
指南here。