2017-08-10 3 views
3

Salut, j'ai essayé de trouver une solution pour cette erreur pendant 2 jours et en vain! J'ai déjà cherché sur Stack Overflow. Les erreurs ne sont tout simplement pas liées aux miennes. Voici la trace de la pile que je reçois.Erreur de passeport - Strategy.ParseErrorResponse

Error 
    at Strategy.parseErrorResponse (/Users/jeremy/projects/thinkful_capstone_2/node_modules/passport-facebook/lib/strategy.js:196:12) 
    at Strategy.OAuth2Strategy._createOAuthError (/Users/jeremy/projects/thinkful_capstone_2/node_modules/passport-oauth2/lib/strategy.js:376:16) 
    at /Users/jeremy/projects/thinkful_capstone_2/node_modules/passport-oauth2/lib/strategy.js:166:45 
    at /Users/jeremy/projects/thinkful_capstone_2/node_modules/oauth/lib/oauth2.js:191:18 
    at passBackControl (/Users/jeremy/projects/thinkful_capstone_2/node_modules/oauth/lib/oauth2.js:132:9) 
    at IncomingMessage.<anonymous> (/Users/jeremy/projects/thinkful_capstone_2/node_modules/oauth/lib/oauth2.js:157:7) 
    at emitNone (events.js:91:20) 
    at IncomingMessage.emit (events.js:188:7) 
    at endReadableNT (_stream_readable.js:975:12) 
    at _combinedTickCallback (internal/process/next_tick.js:80:11) 
    at process._tickCallback (internal/process/next_tick.js:104:9) 

aussi voici mon code:

const path = require('path'); 
// const Strategy = require('passport-facebook').Strategy; 
const bodyParser = require('body-parser'); 
const passport = require('passport'); 
// const { User } = require('../models/usermodel.js'); 
const express = require('express'); 
const cookieParser = require('cookie-parser'); 
const router = express.Router(); 
const app = express(); 

app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(cookieParser()); 
app.use(require('body-parser').urlencoded({ extended: true })); 
app.use(require('express-session')({ secret: 'keyboard cat', resave: true, saveUninitialized: true })); 


passport.serializeUser(function (user, done) { 
    done(null, user); 
}); 

passport.deserializeUser(function (user, done) { 
    done(null, user); 
}); 



router.get('/', passport.authenticate('facebook'), function (req, res) { 
    console.log(req.isAuthenticated()); 
    console.log(req.user); 
    res.sendFile(path.resolve('./public/adwall.html')); 
}); 


module.exports = router; 

toute aide serait appréciée! Je vous remercie!

Edit: J'ai également ajouté cette stratégie dans mon dossier de serveur:

est ici la stratégie de auth facebook que j'utilise dans un autre fichier appelé server.js:

passport.use(new Strategy({ 
    clientID: process.env.FACEBOOK_APP_ID, 
    clientSecret: process.env.FACEBOOK_SECRET, 
    callbackURL: 'http://localhost:8080/facebook/auth/cb' 
}, 
    function (accessToken, refreshToken, profile, cb) { 
     return cb(null, profile); 
    })); 

Voici le lien vers le projet github: https://github.com/jeremytaylor7/wallaby-ads-project

+1

Désolé les gars j'ai oublié d'ajouter, que l'erreur ne se présente que lorsque j'ajoute passport.authenticate comme middleware @ le routeur pour '/' – Jeremy

+0

Même chose ici, si j'ajoute le middleware à '/' j'obtiens cette erreur. – guiomie

Répondre

0

Vous avez oublié quelque chose de très important.

Lorsque vous passport.authenticate('facebook')...

il recherchera la stratégie de Facebook que vous n'avez pas défini.

http://passportjs.org/docs/facebook Regardez ici pour configurer une nouvelle stratégie.

var passport = require('passport') 
    , FacebookStrategy = require('passport-facebook').Strategy; 

passport.use(new FacebookStrategy({ 
    clientID: FACEBOOK_APP_ID, 
    clientSecret: FACEBOOK_APP_SECRET, 
    callbackURL: "http://www.example.com/auth/facebook/callback" 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    User.findOrCreate(..., function(err, user) { 
     if (err) { return done(err); } 
     done(null, user); 
    }); 
    } 
)); 

Aussi peut-être ont app.use(passport.initialize()) et app.use(passport.session()) ci-dessous où vous avez défini la session.

+0

Merci de votre attention! J'ai oublié d'inclure que j'ai ajouté la stratégie dans un fichier différent qui est mon fichier serveur appelé server.js – Jeremy