2017-07-04 1 views
0

J'essaye de configurer l'authentification de Facebook en suivant l'exemple sur passport-facebook GitHub, mais je n'obtiens pas la session pour stocker. Dès que je me connecte à Facebook et que je suis redirigé vers "/", il n'y a aucune preuve que je suis connecté à mon application. Comme il me redirige vers la route SuccessRedirect lorsque mon login est bien réussi sur Facebook, il me semble qu'il me manque du code pour sauvegarder la session.Stockage de la session facebook de passeport dans le nœud

Dans mon fichier app.js j'ai ce qui suit.

 var express = require("express"), 
      bodyParser = require("body-parser"), 
      passport = require("./auth/local"), 
      FacebookStrategy = require("passport-facebook"), 
      LinkedInStrategy = require("passport-linkedin"), 
      GoogleStrategy = require("passport-google"), 
      cookieParser = require('cookie-parser'), 
      session = require("express-session"), 
      fbStrategy = require("./auth/facebook"); 
    var app = express(); 

app.use(cookieParser()); 
app.use(session({ 
    resave: true, 
    saveUninitialized: true 
})); 

app.use(express.static(__dirname + "/public")); 
app.set("view engine","ejs"); 

app.use(passport.initialize()); 
app.use(passport.session()); 

app.get('./auth/facebook', 
    fbStrategy.authenticate('facebook' 
)); 

app.get('./auth/facebook/callback', 
    fbStrategy.authenticate('facebook', { 
     successRedirect: "/", 
     failureRedirect: '/login' }) 
); 

dans l'itinéraire /auth/facebook.js j'ai le code suivant

var passport = require('passport'), 
     FacebookStrategy = require('passport-facebook'), 
     authHelpers = require("./_helpers"); 

    var init = require('./passport'); 

    init(); 

    passport.use(new FacebookStrategy({ 
     clientID: [...], 
     clientSecret: [...], 
     callbackURL: "callbackurl", 
     //for profFields look here for definitions... https://developers.facebook.com/docs/graph-api/reference/v2.5/user 
     profileFields: ['id','first_name','last_name','gender','political','verified','currency','birthday'] 
     }, 
     function(accessToken, refreshToken, profile, done) { 
     function(accessToken, refreshToken, profile, cb) { 
function(accessToken, refreshToken, profile, done) { 
    knex('user').select('email','user_id').where({facebookID:profile.id}) 
    .then((user) => { 
    if (user.length==0) { 
     knex('user').insert({ 
     email: profile.emails[0].value, 
     facebookID:profile.id, 
     firstname: profile.name.givenName, 
     lastname: profile.name.familyName 
     }) 
     return done(null,user); 
    } else { 
     return done(null, user); 
    } 
    }) 
    .catch((err) => {console.log("problem near line 24 in auth/facebook.js... "+err); return done(err); }); 
     } 
    })); 



module.exports = passport; 

Ma configuration de base de données fonctionne bien partout ailleurs, donc je ne comprend pas le code de configuration/fichier ci-dessus extraits.

Répondre