【发布时间】:2017-07-25 08:04:55
【问题描述】:
所以我正在开发一个 Express(带有 Mongoose 和 Passport)应用程序,我想将 facebook 作为一种身份验证方法。我已经完成了它并且它有效,但我认为我没有合适的用户模型来处理多个社交提供者的身份验证过程。我想合并不同的社交账户。这是我当前适用于 facebook auth 的用户模型:
let userSchema = mongoose.Schema({
email: { type: String, unique: true },
name: { type: String },
password: { type: String },
facebookId: String,
facebookToken: String
}, { timestamps: true });
我想到了以下两种方法,但我不确定它们是否可行以及哪种方法最灵活且独立于社交提供者。 我正在考虑拥有这样的本地和社交数组:
let userSchema = mongoose.Schema({
local: {
email: { type: String, unique: true },
name: { type: String },
password: { type: String },
},
facebook: {
id: String,
token: String,
email: String,
name: String
},
google: {
id: String,
token: String,
email: String,
}
}, { timestamps: true });
第三种方法只是覆盖社交提供者 ID(我不确定这是否可以)。
let userSchema = mongoose.Schema({
email: { type: String, unique: true },
name: { type: String },
id: String,
token: String,
}, { timestamps: true });
【问题讨论】:
-
我正在使用第二种方法来处理本地和社交登录。但是,当我尝试使用社交资料登录时,我收到来自 mongo 的错误,即必须填写本地的必填字段。我标记了一些需要的本地配置文件数据。有没有更好的办法?
标签: facebook express mongoose oauth passport.js