当使用自定义登录方法
问题描述:
我试图测试自定义登录方法的功能,所以这是我的客户端获取服务器错误:当使用自定义登录方法
Meteor.loginWithCode = function(phone, code) {
Accounts.callLoginMethod({
methodArguments: [{
hascode: true,
phone: phone,
code: code
}],
userCallback: function loginCallback (error, result) {
console.log(error, result);
}
});
};
这是服务器:
Accounts.registerLoginHandler('login', function(loginRequest) {
var user = Meteor.users.findOne({phone: loginRequest.phone});
if(user.code !== loginRequest.code) {
return null;
}
var stampedToken = Accounts._generateStampedLoginToken();
var hashStampedToken = Accounts._hashStampedToken(stampedToken);
Meteor.users.update(user._id,
{$push: {'services.resume.loginTokens': hashStampedToken}}
);
return {
id: user._id,
token: stampedToken.token
};
});
为什么我我越来越
Exception while invoking method 'login' Error: A login method must specify a userId or an error
当我做Meteor.loginWithCode('123456789', '123');
?
答
您应该返回userId
不id
:
Accounts.registerLoginHandler('login', function(loginRequest) {
...
...
return {
userId: user._id,
token: stampedToken.token
};
})
如果登录不成功,再通过error
代替userId
。
证明:
if (!result.userId && !result.error)
throw new Error("A login method must specify a userId or an error");