我可以使用passport-facebook进行身份验证,并将用户ID和用户名从facebook存储到我的数据库中。我正在从角度控制器查询nodejs:
MyApp.controller("FacebookLogin", function($scope, $http){
$scope.login = function(){
$http.get("/facebooklogin").then(function(response){
if(response.data){
console.log(response.data); // nothing is logged here
} else {
console.log("No Data");
}
});
}
});
在节点中:
app.get('/facebooklogin', passport.authenticate('facebook'));
app.get('/auth/facebook/callback', passport.authenticate('facebook', function(err, user, info){
console.log(err, user, info);
if(err) throw err;
// res.send(user); //Do I send the user info from here?
}));
我想将userid发送到angular以存储在localStorage中,并使用它来查询db以获取将来的请求。这是正确的方法吗?这是SPA。我看到在我的浏览器中创建了connect.sid
cookie。如果userid
中有userid
或我在post
/ get
中发送了什么,我会通过会话识别出passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
,那么如何从中提取compare [a] [b]
?
我读过但不明白这两件事究竟做了什么:
a
非常感谢。
答案 0 :(得分:1)
facebook Auth机制(oAuth)是异步的,因此它的工作方式与您期望的不同。
你没有$ http.get(“/ facebooklogin”)。相反,您应该将浏览器重定向到'/ facebooklogin'
简要说明oauth流程的工作方式是