Firebase确认邮件未发送

9 浏览
0 Comments

Firebase确认邮件未发送

我已成功设置了Firebase的电子邮件/密码验证,但出于安全原因,我希望用户确认他们的电子邮件。\nFirebase的网站上写道:\n

\n当用户使用电子邮件地址和密码注册时,会发送一封确认电子邮件以验证其电子邮件地址。\n

\n但是当我注册时,我没有收到确认电子邮件。\n我找了一下,只找到了发送密码重置电子邮件的代码,但没有找到发送确认电子邮件的代码。\n我在这里找到了一些信息:\nhttps://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email\n有人知道我该如何做吗?

0
0 Comments

Firebase确认邮件未发送的问题可能是因为确认邮件被放在了垃圾邮件文件夹中。解决方法是检查垃圾邮件文件夹。对我来说就是这个问题!当我意识到这一点时,我在垃圾邮件文件夹中有30多封验证邮件哈哈,这种情况经常发生<3

0
0 Comments

Firebase确认电子邮件未发送的原因可能是以下几点:

1. 使用createUserWithEmailAndPassword方法创建用户后立即调用sendEmailVerification()方法,此时user.emailVerfied属性为undefined

2. 在onAuthStateChanged方法中调用sendEmailVerification()方法,但每次刷新页面时都会发送一封新的电子邮件。

解决方法如下:

1. 在createUserWithEmailAndPassword方法的.then回调中,使用credential.user.emailVerified来检查用户的电子邮件是否已验证。

2. 使用onAuthStateChanged方法监听AuthState,在用户状态更改时再调用sendEmailVerification()方法,以避免在每个新会话中都发送电子邮件。

示例代码如下:

firebase.auth()
    .createUserWithEmailAndPassword(email, password)
    .then(function(credential) {
        if (credential && credential.user.emailVerified === false) {
            credential.user.sendEmailVerification().then(function() {
                console.log("电子邮件验证已发送给用户");
            });
        }
    }).catch(function(error) {
        // 处理错误
        var errorCode = error.code;
        var errorMessage = error.message;
        console.log(errorCode, errorMessage);
    });
firebase.auth().onAuthStateChanged(function(user) {
    if (user && user.emailVerified === false) {
        user.sendEmailVerification();
    }
});

0
0 Comments

问题:Firebase确认电子邮件未发送的原因和解决方法

原因:

- Firebase新的电子邮件身份验证文档没有正确记录。

- `firebase.auth().onAuthStateChanged`方法替代了旧的`onAuth`方法。

- 只能向使用`createUserWithEmailAndPassword`方法创建的用户对象发送电子邮件验证。

- 只有在用户通过身份验证后,Firebase才会返回auth对象的promise。

- `user.emailVerified`属性可以检查电子邮件是否已验证。

解决方法:

- 使用`firebase.auth().onAuthStateChanged`方法来检查电子邮件是否已验证。

- 在`onAuthStateChanged`回调函数中,使用`user.emailVerified`属性来判断电子邮件是否已验证。

这个回答非常有帮助,但很遗憾该信息还没有出现在文档中。

需要注意的是,`onAuthStateChanged`是一个对Auth对象的观察者,因为在初始化过程中通常不会立即可用。在这种情况下,通过Firebase函数自动发送电子邮件验证是为了回答初始问题。

在React Native应用中,将`onAuthStateChange`在主App.js中调用或分派给saga函数,这是一种保持持久会话的好方法吗?

有人可以使用非Google电子邮件地址创建“google.com”帐户,此时`emailVerified`标志将返回false,但尝试发送电子邮件验证将无效。有没有办法区分这种情况,以便我们可以忽略验证状态,或者这是Firebase的一个错误?

根据我的经验,使用Microsoft帐户也可以成功使用电子邮件验证。我认为应该更新文档中的说明,电子邮件验证应该适用于任何尚未`emailVerified`且在Firebase身份验证中配置了有效电子邮件的用户。

参考链接:没有提供其他文档的链接。

0