【问题标题】:How to interact with Firebase user after API call?API调用后如何与Firebase用户交互?
【发布时间】: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


【解决方案1】:

如果您使用 Firebase Auth REST API 登录用户,则不能同时使用 Firebase Auth SDK 来管理该登录。您必须坚持使用 REST API 进行所有管理。这意味着您必须跟踪从 API 获得的 ID 令牌,在令牌过期前每小时刷新一次,并保持自己对“登录”用户意味着什么的理解。

我强烈建议只使用提供的 SDK,因为它会自动为您完成所有这些工作。

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2020-10-05
    • 2012-05-12
    • 2020-10-08
    • 2015-09-22
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多