如何在注册时发送Firebase电子邮件确认?

时间:2016-06-30 22:22:21

标签: android firebase firebase-authentication

所以,我在开发控制台中启用了电子邮件/密码,一切正常。除了我应该收到我输入的电子邮件的确认电子邮件,但我没有得到它。我认为它会自动完成,但显然它没有。

注册方法:

public void signUp(View v) {
    String email = emailET.getText().toString();
    String password = passwordET.getText().toString();
    mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("AD", "createUserWithEmail: " + task.isSuccessful() + task.getException());
                    if (!task.isSuccessful()) {
                        createDialogSignUpError(
                                getApplicationContext().getResources().getString(R.string.signUpFailedET),
                                getApplicationContext().getResources().getString(R.string.signUpFailedEM),
                                getApplicationContext().getResources().getString(android.R.string.ok));
                        Toast.makeText(SignUp.this, task.getException().toString(), Toast.LENGTH_LONG).show();
                    } else if (task.isSuccessful()) {
                        Toast.makeText(SignUp.this, "Registration Successful.", Toast.LENGTH_SHORT).show();
                    }
                }
            });

}

它应该发送,但遗憾的是它不是。我已经在某处看过你需要添加一个方法或者某些东西来发送电子邮件,而且文档中缺少它,但那不是Java。

修改

根据here,它仅在iOS和网络上受支持。这是非常令人惊讶的,因为毕竟, android 是谷歌,谷歌是Firebase。即使创建自定义发送的电子邮件,它也可以吗?

编辑2:为了更清楚,Android是否有像这样的电子邮件发件人。如果没有这个API,那将是最好的解决方案。

2 个答案:

答案 0 :(得分:2)

现在根据updated firebase documentation

以下是如何向用户发送验证邮件,在您创建帐户并允许用户登录之后,然后向他/她发送他必须验证帐户然后下次登录的通知被阻止,直到他/她没有验证(我认为这比让用户先被迫打开他的电子邮件更好)

  

向用户发送验证电子邮件

     

您可以向用户发送地址验证电子邮件   sendEmailVerification方法。例如:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.sendEmailVerification()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

答案 1 :(得分:1)

现在,您可以使用Firebase云功能滚动自己的电子邮件发件人,从而在电子邮件中覆盖任何Firebase空白。有一个例子here。当然,这意味着更多的工作不仅仅是配置内置选项,但至少意味着我们可以做任何我们需要做的事情。 :)