【问题标题】:Firebase phone auth replaces userimage and DisplaynameFirebase phone auth 替换了 userimage 和 Displayname
【发布时间】:2019-12-08 12:02:45
【问题描述】:

我首先使用 Firebase 创建带有电子邮件和密码的用户帐户,然后我更新了可以访问的个人资料图片 当前用户.getphotourl()。通过以下代码

 mAuth.createUserWithEmailAndPassword(email, password)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {

                // user account created successfully
                showMessage("Account created");
                // after we created user account we need to update his profile picture and name
                updateUserInfo(name, pickedImgUri, mAuth.getCurrentUser());

            } else {

                // account creation failed
                showMessage("account creation failed" + task.getException().getMessage());
                regBtn.setVisibility(View.VISIBLE);
                loadingProgress.setVisibility(View.INVISIBLE);

            }
        }
    });

在主页中,现在显示用户图像和电子邮件。但是在下一个活动中,当我使用手机身份验证并输入代码,然后在 homeactivity 用户图像和电子邮件中都是空白的..

我想将用户电话号码用于以后的访问而不是登录。但我认为最好只为电话创建数据库,使用电话身份验证并在必要时检索电话号码。但是使用电话验证,旧电子邮件,配置文件网址被替换或发生类似错误。

我该如何解决?这是预期的行为吗?

【问题讨论】:

  • 这个方法updateUserInfo里面的代码是什么?

标签: java android firebase firebase-authentication


【解决方案1】:

所以我从你的问题中可以理解的是:

  • 登录成功
  • HomeActivity emailprofilePic 正确显示
  • 转到下一个活动,用户输入电话号码
  • 返回 HomeActivity,emailprofilePic 现在为空。

如果是这种情况,您可以将用户 emailprofileUrl 存储在 savedInstanceState 中:

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("message", "This is a saved message");
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Toast.makeText(this, "onRestoreInstanceState", Toast.LENGTH_SHORT).show();
    }

并且在onCreate中,可以每次检查saveInstance状态是否为null,然后获取并设置数据:

    if (savedInstanceState != null) {
        String message = savedInstanceState.getString("key");
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }

或者您可以简单地在onResume 本身中设置电子邮件和profilePic。 这将在每次调用 OnResume 时设置电子邮件和 profilePic,并可能解决问题。

【讨论】:

  • 但这是保存在本地的,当用户从另一台设备登录时,配置文件图像和显示名称现在仍然是空的,这是我遇到的主要问题。
  • 因此您可以将它们存储在共享首选项中。购买时不要忘记在用户注销时清除它们。
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2019-02-10
  • 2021-10-04
  • 2021-06-13
  • 1970-01-01
  • 2020-02-10
  • 2018-08-14
  • 1970-01-01
相关资源
最近更新 更多