5

我对如何使用有点困惑Accounts.onEmailVerificationLink
文档有些模棱两可:

Accounts.onEmailVerificationLink(回调)

注册一个函数,当在 Accounts.sendVerificationEmail 发送的电子邮件中单击电子邮件验证链接时调用该函数。这个函数 应该在顶层代码中调用,而不是在 Meteor.startup() 中。

“这个函数”、回调或Accounts.onEmailVerificationLink它本身到底是什么意思?

无论如何,无论我把东西放在哪里,我总是在浏览器控制台上收到这个错误消息:

Accounts.onEmailVerificationLink was called more than once. Only one callback added will be executed.
4

4 回答 4

3

如果您使用收集挂钩(https://atmospherejs.com/matb33/collection-hooks),您可以执行以下操作:

Meteor.users.after.update(function (userId, doc, fieldNames, modifier, options) {
  if (!!modifier.$set) {
    //check if the email was verified
    if (modifier.$set['emails.$.verified'] === true) {
      //do something
    }
  }
});

在花了一些时间尝试连接到 onMailVerificationLink 之后,我发现上面的内容不那么挑剔了。

于 2016-02-11T02:41:05.617 回答
-1
if (Meteor.isClient) {
  //Remove the old callback
  delete Accounts._accountsCallbacks['verify-email'];
  Accounts.onEmailVerificationLink(function (token, done) {
    Accounts.verifyEmail(token, function (error) {
      if (!error) {
        //Do stuff
      }
      done();

    });
  });
}
于 2015-12-19T12:35:10.480 回答
-1

它所指的功能是“onEmailVerificationLink”。它需要在一些高级客户端代码中。使用下面的代码,我可以在验证电子邮件后更改功能:

// Override the method that fires when the user clicks the link in the verification email
// for our own behavior.
Accounts.onEmailVerificationLink((token, done) => {
    Accounts.verifyEmail(token, (err) => {
        if (err) {
            console.log("Error: ", err);
        } else {
            console.log("Success");
            // Do whatever you want to on completion, the
            // done() call is the default one.
            done();
        }
    });
});

控制台消息仍然出现,但被覆盖的代码运行。

于 2017-10-30T19:16:55.113 回答
-2

如果可以的话,你应该删除 accounts:ui 包,这也是使用它

meteor remove accounts:ui

然后使用回调添加自己的逻辑

Accounts.onEmailVerificationLink(function(token, done) {
  //your own logic
  //Accounts.verifyEmail(token, (error){
  //  if(!error) {
  //    alert('done!');
  //  }
  //});
});
于 2015-10-10T20:02:21.850 回答