Meteor帐户框架已签名/登录事件

Meteor帐户框架已签名/登录事件,meteor,Meteor,我正在使用accounts ui包,希望在用户登录/注册后立即处理一些javascript 是否有一个事件在用户登录后立即被调用?您可以检查Meteor.userId()函数内部的Meteor.autorun(): 原始登录API(例如loginWithFacebook,loginWithPassword,等等)有一个在登录完成时触发的回调,但当前未通过帐户ui公开。这可能会改变 受Werner建议启发,同时考虑页面负载的潜在解决方案: var oldUserId = undefined; M

我正在使用
accounts ui
包,希望在用户登录/注册后立即处理一些javascript


是否有一个事件在用户登录后立即被调用?

您可以检查
Meteor.userId()
函数内部的
Meteor.autorun():

原始登录API(例如
loginWithFacebook
loginWithPassword
,等等)有一个在登录完成时触发的回调,但当前未通过
帐户ui
公开。这可能会改变

受Werner建议启发,同时考虑页面负载的潜在解决方案:

var oldUserId = undefined;

Meteor.autorun(function() {
  var newUserId = Meteor.userId();
  if (oldUserId === null && newUserId) {
    console.log('The user logged in');
  } else if (newUserId === null && oldUserId) {
    console.log('The user logged out');
  } 
  oldUserId = Meteor.userId();
});

只是给一个选择;我修补了回调函数。它看起来有点复杂,因为credentialRequestCompleteHandler需要一个返回函数的函数,但除此之外,它是一个普通的猴子补丁。将其粘贴到main.js中,或者延迟处理并且只处理一次的内容。我希望这有助于将来的参考

var orgCallback = Accounts.oauth.credentialRequestCompleteHandler;
Accounts.oauth.credentialRequestCompleteHandler = function(callback){
    return function (credentialTokenOrError) {
        var tmpFunc = orgCallback(callback);
        tmpFunc(credentialTokenOrError);
        alert("do your own thing here");
    }
}

在重新加载页面(或从浏览器端打开url,如果用户已登录)期间,使用自动运行会出现问题。我现在看到了。非常不幸。我尝试了很多不同的解决方法,但都没有成功:(您应该提交一个功能请求。这是一个很好的方法,特别是如果您希望操作在OAuth登录时只运行一次。如果用户通过用户名/密码登录,则不会触发此回调。
var orgCallback = Accounts.oauth.credentialRequestCompleteHandler;
Accounts.oauth.credentialRequestCompleteHandler = function(callback){
    return function (credentialTokenOrError) {
        var tmpFunc = orgCallback(callback);
        tmpFunc(credentialTokenOrError);
        alert("do your own thing here");
    }
}