2

私はaccounts-uiパッケージを使用しており、ユーザーがログインまたは登録するとすぐに JavaScript を処理したいと考えています。

ユーザーがサインインするとすぐに呼び出されるイベントはありますか?

4

3 に答える 3

3

生のログインAPI(たとえばloginWithFacebookloginWithPasswordなど)には、ログインが完了したときに起動するコールバックがありますが、これは現在、を介して公開されていません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

代替案を提示するだけです。コールバック関数にパッチを適用しました。credentialRequestCompleteHandler は関数を返す関数を必要とするため、もう少し複雑に見えますが、それ以外は単純なモンキー パッチです。これを main.js または処理が遅れて 1 回しか処理されないものに貼り付けます。今後の参考になれば幸いです。

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 に答える
2

Meteor.userId()内部の関数の結果を確認できますMeteor.autorun():

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