首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Passport错误- Strategy.ParseErrorResponse

Passport错误- Strategy.ParseErrorResponse
EN

Stack Overflow用户
提问于 2017-08-11 06:28:29
回答 1查看 1.6K关注 0票数 3

嗨,我已经试着为这个错误找了两天的解决方案,但都没有结果!我已经在Stack Overflow上搜索过了。这些错误根本与我的无关。这是我正在接收的堆栈跟踪。

代码语言:javascript
复制
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)

下面是我的代码:

代码语言:javascript
复制
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身份验证策略:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2017-08-11 08:11:51

你忘了一件很重要的事。

当您使用passport.authenticate('facebook')...

它将查找您尚未定义的facebook策略。

http://passportjs.org/docs/facebook查看此处配置新策略。

代码语言:javascript
复制
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())

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45624373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档