护照错误 – Strategy.ParseErrorResponse
您好,我一直在试图find解决这个错误的2天,无济于事! 我已经search堆栈溢出。 这些错误与我的无关。 这是我收到的堆栈跟踪。
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)
这里也是我的代码:
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;
任何帮助,将不胜感激! 谢谢!
编辑:另外我在我的服务器文件中添加了这个策略:
这里是我在一个名为server.js的不同文件中使用的Facebook身份validation策略:
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); }));
这里是github项目的链接: https : //github.com/jeremytaylor7/wallaby-ads-project
你忘记了一件非常重要的事情
当你做passport.authenticate('facebook')...
它会寻找你没有定义的facebook战略。
http://passportjs.org/docs/facebook看这里来configuration新的策略。
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); }); } ));
也可以在下面定义会话的地方使用app.use(passport.initialize())
和app.use(passport.session())
。
- 如何解决:Nodejs passport.header问题,req.session.passport未定义
- 尝试访问节点js中的req.user属性时,无法读取未定义的属性“用户名”
- nodejs护照login
- 使用jQuery进行Passport.JS身份validation不会存储Cookie
- 未处理的拒绝TypeError:dbUser.validPassword不是函数Sequelize Node React Passport
- 护照JWT – 未经授权
- 更新Passport + MongoDB中的用户logging
- Passport.js – 将数据发回到react / redux应用程序,同时在login后redirect
- 谷歌oauth不返回电子邮件通行证authentication