2017-07-04 1 views
0

パスポート - フェイスブックGitHubの例に従ってFacebook認証を設定しようとしていますが、セッションを保存できません。 Facebookにログインして「/」にリダイレクトされると、私のアプリケーションにログインしているという証拠はありません。 Facebookのログインが成功したときにsuccessRedirectルートに戻ってくるので、セッションを保存するために必要なコードがないようです。ノードにパスポートのfacebookセッションを保存しています

私のapp.jsファイルには次のものがあります。私は私のデータベース構成は、他のどこでも罰金以下のコード

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; 

働いてきたので、私は上記のコンフィギュレーションコード/ファイルが含まれていませんでしたルート/auth/facebook.jsで

 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' }) 
); 

スニペット。

答えて

0

https://github.com/rupalipemare/Todo-Demoのコードをここで確認してください。そこには、ローカル、facebook、およびgoogleを使用したパスポート認証を示す完全な例があります。

関連する問題