Meine Anwendung ist mit React gebaut, die vollständig von Meteor getrennt ist. Ich benutze Asteroid als Schnittstelle zu Meteor, das nur als Backend dient. Ich habe den Facebook-Login-Button am Frontend manuell angelegt und möchte die von Facebook geholten Daten an Accounts.createUser
übergeben. Diese Methode verlangt zwei Parameter, die nicht verfügbar ist, weil ich es wie so formatiert haben:Accounts.createUser ohne Benutzername, Passwort und E-Mail
const data = {
services: {
facebook: fb
},
profile: {
first_name: fb.first_name,
last_name: fb.last_name,
}
}
I wie unten ein Verfahren geschaffen haben, aber ich konnte den Benutzer mit entsprechenden Token anmelden oder was auch immer Indikator, der Meteor benötigt :
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()}
}
}
Wie man den Benutzer richtig einträgt?