私はaccounts-ui
パッケージを使用しており、ユーザーがログインまたは登録するとすぐに JavaScript を処理したいと考えています。
ユーザーがサインインするとすぐに呼び出されるイベントはありますか?
私はaccounts-ui
パッケージを使用しており、ユーザーがログインまたは登録するとすぐに JavaScript を処理したいと考えています。
ユーザーがサインインするとすぐに呼び出されるイベントはありますか?
生のログイン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();
});
代替案を提示するだけです。コールバック関数にパッチを適用しました。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");
}
}
Meteor.userId()
内部の関数の結果を確認できますMeteor.autorun():
Meteor.autorun(function() {
if (Meteor.userId()) {
console.log('The user logged in');
}
});