以下是我用来发送验证邮件的代码(取自官方docs)
var user = firebase.auth().currentUser;
user.sendEmailVerification().then(function() {
// Email sent.
}).catch(function(error) {
// An error happened.
});
User
对象具有emailVerified
属性。当用户点击邮件中的链接时,它不会改变。它仅在重新登录时更新。
有没有办法让应用知道用户是否成功验证了他们的地址?
答案 0 :(得分:4)
firebaser here
当用户点击验证链接时,不会触发客户端回调。
当用户验证他们的电子邮件地址时,我们已经看到了触发云功能的功能请求,但没有关于是否/何时会发生更新的更新。 (另见:Cloud Functions for Firebase - action on email verified)
我现在能想到的最好的方法是偶尔致电User.reload()
以获取更新的属性。
答案 1 :(得分:0)
您可以在发送电子邮件验证时添加continueUrl,以重定向回您的应用:https://firebase.google.com/docs/auth/web/passing-state-in-email-actions
var actionCodeSettings = {
url: 'https://www.example.com/?email=' +
firebase.auth().currentUser.email
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
.then(function() {
// Verification email sent.
});
验证后会显示一个继续按钮。您可以使用它返回应用程序或某个页面,您可以通过验证的实时数据库通知原始页面。
答案 2 :(得分:0)
您可以通过尝试从Firebase获取当前用户的用户ID来确定用户是否单击了验证链接,当该用户ID为空时,这意味着该用户单击了验证链接并创建了一个新用户
FirebaseAuth mAuth = FirebaseAuth.getInstance();
if(!mAuth.getCurrentUser().getUid().equals("")){
// the user clicked on the verification link.
// a new user has been created.
}
else{
// the user didn't click on the verification link.
// No user created.
}