首页 > 解决方案 > API调用后如何与Firebase用户交互?

问题描述

我使用 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正确检索?

谢谢。

标签: javaandroidfirebasefirebase-authenticationretrofit2

解决方案


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

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


推荐阅读