2017-01-08 28 views
0

我試圖做一個Facebook登錄護照的NodeJS功能沒有得到所謂的

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但功能看起來甚至不會使用其authentication策略之前調用

+0

你被重定向到'callbackURL'。但這是否意味着請求成功,或者是用於失敗的相同URL?你是否需要查看請求主體或其他東西以查看它是否成功? –

回答

1

你需要initializepassport

從護照Documantation本身:

連接快速基於應用程序,passport.initialize() 中間件需要初始化護照。如果您的應用程序 使用持久登錄會話,passport.session()中間件必須 也被使用。

請注意,啓用會話支持完全是可選的,儘管對於大多數應用程序推薦使用 。如果啓用,請務必在passport.session()之前使用 express.session(),以確保登錄 會話以正確的順序恢復。

通過Passport configure Documentationpassport.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); 

轉到添加這些行更好地理解它。

不要忘記import需要node modules

var cookieParser = require('cookie-parser'); 
var expressSession = require('express-session'); 

希望這有助於!