我正在尝试进行Facebook登录
var passport = require('passport');
var express = require('express');
var FacebookStrategy = require('passport-facebook').Strategy;
var bodyParser = require('body-parser');
var app = express();
passport.use(new FacebookStrategy({
clientID: '-',
clientSecret: '-',
callbackURL: "http://localhost:3000"
},
function(accessToken, refreshToken, profile, done) {
console.log("Token:", accessToken);
console.log("Refresh token:", refreshToken);
done(null);
}
));
app.get('/auth/facebook',
bodyParser.urlencoded({ extended: true }),
passport.authenticate('facebook'));
app.get('/', function (req, res) {
res.send("Helo");
});
app.listen(3000);
但是为什么我从来没有从FacebookStrategy中的函数获取控制台日志? 登录工作完美,我被重定向到callbackURL但该函数看起来甚至没有被调用
答案 0 :(得分:1)
在使用initialize
策略之前,您需要passport
authentication
。
来自Passport Documantation本身:
在 Connect 或 Express 的应用程序中, passport.initialize() 中间件需要初始化Passport 。如果你的申请 使用持久登录会话, passport.session()中间件必须 也可以使用。
请注意,启用会话支持完全是可选的,尽管它是 推荐用于大多数应用。如果启用,请务必使用 express.session()在passport.session()之前确保登录 会话以正确的顺序恢复。
在passport.use(new FacebookStrategy({...})
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.session({ secret: 'your_express_session_secret' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
通过Passport configure Documentation更好地了解它。
别忘了import
必需node modules
:
var cookieParser = require('cookie-parser');
var expressSession = require('express-session');
希望这有帮助!