2016-03-31 12 views
0

私はnode.jsのPassportを使用してFacebook認証を実装しています。 Facebookからのユーザープロフィールを正常に取得できます。問題は、コードはsuccessRedirect:/ profileにユーザーをリダイレクトする必要がありますが、代わりに常に/ fbFailureに行きます。どんなに私が試したものを、それは常にURLに行かない:somesite.com:6161/fbFailure# =Node.jsのPassportを使用したFacebook認証

パスポートミドルウェアコード:

var FacebookStrategy = require('passport-facebook').Strategy; 
var models = require('../models'); 
passport.use('facebook', new FacebookStrategy(
{ 
    clientID: '1735552370024305', clientSecret: 'a004f1aee925b615022d7573984d5c26', callbackURL: "http://www.somesite.com:6161/facebookSuccess", profileFields: ['id', 'displayName', 'photos', 'emails'], 
}, 
function(access_token, refreshToken, profile, done) { 
    console.log('profile', profile); 
models.Member.findOne({ '__id' : profile.id }, function(err, user) { 
    if (err) 
    return done(err); 
    if(user){ 
    return done(null, user); 
    } 
    done(null, user); 
}) 
} 
)); 

マイルート:

app.get('/facebook', passport.authenticate('facebook', { scope : 'email' })); 
app.get('/facebookSuccess', passport.authenticate('facebook', { 
     successRedirect : '/profile', 
     failureRedirect : '/fbFailure' 
    })); 

app.get('/profile', function(req, res, next) { 
res.send('Successfully authenticated'); 
}); 

app.get('/fbFailure', function(req, res, next) { 
res.send('Failed to authenticate'); 
}); 

コンソール出力:

json: 
    { id: '10154130288931542', 
    name: ‘Tom Verra’, 
    picture: { data: [Object] }, 
    email: ‘[email protected]' } } 
GET /facebookSuccess?code=AQBzdIfKPQ..............YU6TvYuf...... 

ご協力いただければ幸いです。前もって感謝します。

+0

を(コールバック)ミドルウェア。 –

+0

パスポートシリアライザ、デシリアライザは、ローカル戦略とFacebook戦略の両方に共通しています。これは私が持っているものです。 passport.serializeUser(function(user、done){ done(null、user); }); passport.deserializeUser(function(user、done){ done(null、user); }); – Jay

答えて

0

あなたは、res.redirect('/profile');を使用して、それがGitHubの(https://github.com/jaredhanson/passport-facebook#authenticate-requests)のパスポート - FacebookのREADMEに行われているだけの方法リダイレクトを試みることができる:あなたの `passport.deserializeUser(コールバック)`と `passport.serializeUserをチェック

app.get('/facebookSuccess', 
    passport.authenticate('facebook', { failureRedirect: '/fbFailure' }), 
    function(req, res) { 
    res.redirect('/profile'); 
    });