【问题标题】:Firebase email verification not updating statusFirebase 电子邮件验证未更新状态
【发布时间】:2018-07-09 21:03:53
【问题描述】:

我在我的应用程序中使用 Firebase 身份验证,用户可以使用电子邮件和密码进行注册,并且他必须验证电子邮件。

用户收到验证邮件,但当他验证并返回应用程序时,isEmailVerified() 始终为 false。所以我的应用程序仍然不允许用户使用所有功能,尽管他已经验证了他的电子邮件。

但如果他们注销并再次登录,isEmailVerified() 会立即返回 true。但是注销用户然后重新登录不是很好吗?

public class Profile extends AppCompatActivity {

    FirebaseDatabase database;
    DatabaseReference myRef;
    TextView name;
    Button logout;
    FirebaseAuth auth;
    String userStatus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);

        auth = FirebaseAuth.getInstance();
        database = FirebaseDatabase.getInstance();
        myRef = database.getReference("name");

        name=findViewById(R.id.id_name);
        logout=findViewById(R.id.id_logout);

        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                auth.signOut();

               startActivity(new Intent(Profile.this, Login.class));
            }
        });

  userStatus= String.valueOf(auth.getCurrentUser().isEmailVerified());

        if (userStatus =="true")

        {

            myRef.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    String value = dataSnapshot.getValue(String.class);
                    name.setText("Hello my name is: "+value);
                    Log.d("ashu", "Value is: " + value);
                }

                @Override
                public void onCancelled(DatabaseError error) {
                    // Failed to read value
                    Log.d("ashu", "Failed to read value.", error.toException());
                }
            });
        }

        else {
            Toast.makeText(Profile.this,"Verify your email ", Toast.LENGTH_SHORT).show();
            name.setText("Verify your email");

       }}}

【问题讨论】:

  • 请发布您用来登录用户的代码
  • @RosárioPereiraFernandes 感谢您的考虑

标签: android firebase firebase-authentication


【解决方案1】:

这是我在提出一些逻辑后的答案

userStatus = String.valueOf(auth.getCurrentUser().isEmailVerified());

// user has not verified the email
Toast.makeText(Profile.this,"Verify your email ", Toast.LENGTH_SHORT).show();
name.setText("Verify your email");

auth.getCurrentUser().reload().addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {

                    if (userStatus =="true")

                    {
//if they have verified the email
                        myRef.addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                // retrieving the value of current user

                                String value = dataSnapshot.getValue(String.class);
                                name.setText("Hello my name is: "+value);
                            }

                            @Override
                            public void onCancelled(DatabaseError error) {
                                // Failed to read value
                                Log.d("ashu", "Failed to read value.", error.toException());
                            }
                        });



                    }

                    else {

                        name.setText("Verify your mail");
                    }

                }
            });

        }

【讨论】:

    猜你喜欢
    • 2018-11-26
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多