首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在isEmailVerified()的每个调用中返回错误条件,即使在电子邮件验证之后

在isEmailVerified()的每个调用中返回错误条件,即使在电子邮件验证之后
EN

Stack Overflow用户
提问于 2020-03-18 07:00:44
回答 3查看 379关注 0票数 1

实际上我在这里做什么,当一个用户登录到他们的帐户,然后我正在检查他们是否已经核实了他们的电子邮件地址,如果没有,那么我是启动EmailVerificationActivity。当用户单击发送验证邮件按钮时,电子邮件验证代码将被发送到用户的电子邮件地址。

之后,当用户成功验证其电子邮件地址时,再次单击发送验证链接按钮。

而不是显示吐司消息Toast.makeText(this, "Your email has been verified, Now you can login.", Toast.LENGTH_LONG).show();,再次发送电子邮件验证链接。

为什么isEmailVerified()返回false条件。

这是我的EmailVerificationActivity

代码语言:javascript
复制
package com.socialcodia.sherewatan;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class EmailVerificationActivity extends AppCompatActivity {

    private TextView tvEmailAddress;
    private Button btnSendVerificationEmail, btnSignOut;

    //Firebase
    FirebaseAuth mAuth;
    FirebaseUser mUser;

    String email;

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

        //Init
        tvEmailAddress = findViewById(R.id.tvEmailAddress);
        btnSendVerificationEmail = findViewById(R.id.btnSendVerificationEmail);
        btnSignOut = findViewById(R.id.btnSignOut);

        //Firebase Init
        mAuth = FirebaseAuth.getInstance();
        mUser = mAuth.getCurrentUser();

        // get and set email address
        email = mUser.getEmail();
        tvEmailAddress.setText(email);

        btnSignOut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signOut();
            }
        });

        btnSendVerificationEmail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isEmailVerified();
            }
        });
    }

    private void isEmailVerified()
    {
        if (mAuth.getCurrentUser()!=null)
        {
            boolean isEmailVerified = mAuth.getCurrentUser().isEmailVerified();
            if (isEmailVerified)
            {
                Toast.makeText(this, "Your email has been verified, Now you can login.", Toast.LENGTH_LONG).show();
            }
            else
            {
                sendVerificationEmail();
            }
        }
    }

    private void sendVerificationEmail()
    {
        mAuth.getCurrentUser().sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful())
                {
                    Toast.makeText(EmailVerificationActivity.this, "Email verification link has been sent", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(EmailVerificationActivity.this, "Oops! Failed to send email verification link", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    private void sendToLoginWithEmail()
    {
        Intent intent= new Intent(getApplicationContext(),LoginActivity.class);
        intent.putExtra("email",email);
        startActivity(intent);
        finish();
    }

    private void signOut()
    {
        mAuth.signOut();
        sendToLoginWithEmail();
    }
}
EN

Stack Overflow用户

发布于 2020-03-18 07:05:13

您需要重新加载当前用户信息。您可以看到您从身份验证中获得的用户的数据是旧的,您需要检索最新的。为此使用reload()方法。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60734795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档