我正在开发一个统一应用程序。对于登录,有两种方法,一种使用电子邮件,另一种使用Facebook。如果单独登录,我没有任何问题。注册和登录与电子邮件完美的工作。在Facebook上登录也非常有效。这是我创建的工作流程,只是为了让你明白。

tl;博士阅读更新
account还有另一个模式,用于登录。
var Account = new Schema({
email: String,
password: String,
facebookId: String
});有关后端API.的知识
正如我说的,我已经涵盖了当客户端注册并使用电子邮件登录时,客户端可以使用该应用程序的部分。但我的困惑是如何处理Facebook的登录。Facebook已经与Unity集成,登录是成功的。
现在,我如何使用由Facebook生成的Facebook登录信息到我的后端,以便我可以在整个系统中授权用户,就像在电子邮件登录中所做的那样。
通过在SO和Google中的其他问题,我遇到了passport-facebook-token,我也尝试使用这个插件,但是无法给出将SDK中的数据处理到Nodejs中的逻辑和流程。有人能帮我理解一下是怎么做到的吗?
passport-facebook-token 更新1:使用
基于策略的index.js
passport.use(new FacebookTokenStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET
}, function(accessToken, refreshToken, profile, done) {
Account.findOrCreate({facebookId: profile.id}, function (error, user) {
return done(error, user);
});
}
));控制器API
api.post('/auth/facebook/token',
passport.authenticate('facebook-token'),
function (req, res) {
console.log(req.user);
// do something with req.user
res.sendStatus(req.user? 200 : 401);
}
);现在,没有显示错误,但是数据没有插入到Account中,我在Model中有这个findOrCreate()函数。
Account.statics.findOrCreate = function findOrCreate(profile, cb){
var userObj = new this();
this.findOne({facebookId : profile.id},function(err,result){
if(!result){
userObj.facebookId = profile.id;
//....
userObj.save(cb);
}else{
cb(err,result);
}
});
};发布于 2017-04-27 22:57:10
为此您可以使用facebook护照,您可以在这里检查文档:https://github.com/jaredhanson/passport-facebook,但是基本上,在您已经设置了您的开发人员帐户并从facebook的开发人员站点获得您的密钥之后,您可以实现一个FacebookStrategy对象,比如您必须指定您的凭据,还有一个回调,在文档示例中是对另一个快速服务器资源的http请求,然后您可以将数据保存到mongo。
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: "http://localhost:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, cb) {
User.findOrCreate({ facebookId: profile.id }, function (err, user) {
return cb(err, user);
});
}
));https://stackoverflow.com/questions/43557408
复制相似问题