【发布时间】:2020-08-26 19:52:36
【问题描述】:
我使用 Retrofit2 执行 API 调用,通过 Firebase 身份验证使用电子邮件和密码登录用户,然后需要以某种方式与用户对象交互,即刷新一些数据或检查用户是否在下次应用程序启动时登录(我得到一个正确的 Json 对象)。
但是在 API 调用检查后 FirebaseAuth 对象 mAuth.getCurrentUser() 给出 null 并且不知道如何在我的应用程序中保存登录状态。
NetworkService.getInstance().getJsonApi()
.loginWithEmail(email, password, true)
.enqueue(new Callback<Transaction.Result>() {
@Override
public void onResponse(Call<Transaction.Result> call, Response<Transaction.Result> response) {
if (response.code() == 200) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
activity.updateUI(user);
activity.startService();
} else {
Log.d(TAG, "signInWithEmail:failure");
activity.showToast("Authentication failed.");
activity.updateUI(null);
}
activity.hideProgressBar();
}
@Override
public void onFailure(Call<Transaction.Result> call, Throwable t) {
t.printStackTrace();
}
});
如何正确检索FirebaseUser?
谢谢。
【问题讨论】:
-
我不清楚“用户显示为空”是什么意思。您具体观察到哪些与您的预期不同?
-
@DougStevenson FirebaseAuth object mAuth.getCurrentUser() 给出 'null' 作为结果。
-
其实我需要获取用户信息——如果他已经登录(非空)、邮箱等
-
你为什么期望用户在这里是非空的?调用自定义 API 端点不会导致用户突然登录。您应该使用 Firebase Auth SDK 提供的 API 登录用户。
-
@DougStevenson 我实际上正在这样做firebase.google.com/docs/reference/rest/…,我现在真的不明白如何检查用户是否登录以及用户的登录状态保存在哪里 - 在 Firebase 的服务器端(所以我需要以某种方式检查用户状态)或在应用程序端?
标签: java android firebase firebase-authentication retrofit2