我使用 Meteor用户帐户使用多重服务(google,facebook,...)
我不明白为什么当我使用相同的电子邮件地址注册谷歌和Facebook时,mongodb会创建2个不同的帐户。
我使用默认的Meteor用户帐户设置。
(我没有代码向您展示)
答案 0 :(得分:1)
Meteor不会根据电子邮件地址合并来自不同服务的用户帐户。如果用户的登录凭据尚未存在于数据库中,则会创建新用户。自动合并Facebook,Google和电子邮件/密码凭据是一个潜在的安全漏洞。
但是,我相信可以手动合并它们。登录凭据存储在db.users.services
文档中,每个用户应该可以有多个登录方法。我不建议这样做。
答案 1 :(得分:0)
如果您想确保同一封电子邮件未被使用两次,您可以执行以下操作:
Accounts.onCreateUser(function(options, user) {
var service, serviceName;
if (!user.profile) {
user.profile = options.profile || {};
}
if(user.services) {
// Get first service
serviceName = _.keys(user.services)[0];
user.meta.service = serviceName;
if (!user.emails || !user.emails.length) {
if(serviceName === "facebook" || serviceName === "google") {
service = user.services[serviceName];
user.emails = user.emails || [];
user.emails[0] = {
address: service.email,
verified: service.verified_email
};
}
}
}
return user;
});
这将在用户“email”字段中添加来自提供商的电子邮件字段,这将阻止用户使用两个不同的帐户注册两次。