2

我正在使用该accounts-ui软件包,并希望在用户登录/和或注册后立即处理一些 javascript。

用户登录后是否有事件被调用?

4

3 回答 3

3

原始登录 API(例如loginWithFacebook,loginWithPassword等)有一个在登录完成时触发的回调,但目前没有通过accounts-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();
});
于 2013-01-16T00:15:29.150 回答
2

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

Meteor.autorun(function() {
  if (Meteor.userId()) {
    console.log('The user logged in');
  }
});
于 2013-01-08T22:21:52.220 回答
2

只是提供一个替代方案;我猴子修补了回调函数。它看起来有点复杂,因为 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");
    }
}
于 2013-07-27T11:47:11.150 回答