未知身份验证Facebook策略-PassportJS [英] Unknown Authentication Facebook Strategy - PassportJS

查看:112
本文介绍了未知身份验证Facebook策略-PassportJS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在PassportJS上遇到问题.它显示此消息,但我不明白我在哪里做错了:

I've a issue with PassportJS. It displays this message and I can't understand where I'm doing wrong:

{"message":"Unknown authentication strategy \"facebook\"","error":{}}

GET/auth/facebook 500 0.505毫秒-69

GET /auth/facebook 500 0.505 ms - 69

为简单起见和学习目的,对凭据进行了硬编码.已安装Passport和Passport-Facebook.

Credentials are hardcoded for simplicity and learning purpose. Passport and Passport-Facebook are installed.

auth/index.js

var passport = require('passport');

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

var User = require('../modules/user');

module.exports = function(){

    passport.use( new FacebookStrategy({
            clientID: "secret",
            clientSecret : "secret",
            callbackURL : "secret"
        },
        function(accessToken, refreshToken, profile, done) {
            User.findOne({ email: profile.emails[0].value }, function (err, user) {
                if (err) { return done(err) }
                if (!user) {
                    user = new User({
                        firstname: profile.name.givenName,
                        lastname: profile.name.familyName,
                        email: profile.emails[0].value,
                        providers: {
                            facebook: {
                                id: profile.id,
                                access_token: accessTOken,
                                display_name: displayName,
                                picture: "http://graph.facebook.com/"+profile.id+"/picture?type=square"
                            }
                        }
                    })
                    user.save(function (err) {
                        if (err) console.log(err)
                        return done(err, user)
                    })
                }
                else {
                    return done(err, user)
                }
            })
        }
    ));
};

routes/auth.js

var express = require('express');
var router = express.Router();
var passport = require('passport');

router.get('/facebook', passport.authenticate('facebook'), function(res, res){});

router.get('/facebook/callback', passport.authenticate('facebook'), function(res, res){});


module.exports = router;

app.js

const express = require('express');
const path = require('path');

const logger = require('morgan');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const passport = require('passport');

const auth = require('./routes/auth');

const app = express();
mongoose.connect('mongodb://localhost:auth/auth');

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(passport.initialize());

app.use('/auth', auth);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.json({
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.json({
    message: err.message,
    error: {}
  });
});


module.exports = app;

解决方案:

根据建议,我只需在app.use(passport.initialize());

app.js

require('./auth')(passport);

推荐答案

解决方案:

根据建议,我只需在app.use(passport.initialize());

app.js

require('./auth')(passport);

这篇关于未知身份验证Facebook策略-PassportJS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆