有没有办法知道用户点击了验证链接?

时间:2017-10-25 16:55:31

标签: firebase-authentication

以下是我用来发送验证邮件的代码(取自官方docs

var user = firebase.auth().currentUser;

user.sendEmailVerification().then(function() {
  // Email sent.
}).catch(function(error) {
  // An error happened.
});

User对象具有emailVerified属性。当用户点击邮件中的链接时,它不会改变。它仅在重新登录时更新。 有没有办法让应用知道用户是否成功验证了他们的地址?

3 个答案:

答案 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.
}