私は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......
ご協力いただければ幸いです。前もって感謝します。
を(コールバック)ミドルウェア。 –
パスポートシリアライザ、デシリアライザは、ローカル戦略とFacebook戦略の両方に共通しています。これは私が持っているものです。 passport.serializeUser(function(user、done){ done(null、user); }); passport.deserializeUser(function(user、done){ done(null、user); }); – Jay