0
我的应用程序是使用与Meteor完全分离的React构建的。我使用Asteroid来连接Meteor,它只作为后端。我在前端手动创建了Facebook登录按钮,并希望将从Facebook获取的数据传递到Accounts.createUser
。这种方法要求提供两个参数是不可用,因为我已经格式化它像这样:Accounts.createUser没有用户名,密码和电子邮件
const data = {
services: {
facebook: fb
},
profile: {
first_name: fb.first_name,
last_name: fb.last_name,
}
}
我已经创建了如下的方法,但我无法登录的用户与适当的标记或什么都指示器流星需要:
getLoginByExternalService(options) {
if (Meteor.userId()) throw new Meteor.Error('400',`Please logout ${Meteor.userId()}`);
const email = options.services.facebook.email
const facebookId = options.services.facebook.id
const user = {services: {}}
user.services = options.services
const users = Meteor.users.find({"services.facebook.id": facebookId}).fetch();
if (!users.length) {
const userId = Accounts.insertUserDoc(options, user)
if (Meteor.isServer)
this.setUserId(userId)
else
Meteor.setUserId(userId)
return userId
} else {
if (Meteor.isServer)
this.setUserId(users[0]._id)
if (Meteor.isClient)
Meteor.setUserId(userId)
return {users, userId: Meteor.userId()}
}
}
如何正确登录用户?