1

我正在使用本地主机来测试护照-facebook 身份验证,我一直在尝试实施身份验证,但我收到了上面提到的错误但无济于事,这是我用于 facebook 身份验证的 passport.js 代码

const  mongoose  = require("mongoose");
const FacebookStrategy = require('passport-facebook').Strategy;
const passport = require('passport');
const User = module.exports = mongoose.model('User', facebookSchema)


var facebookSchema = mongoose.Schema

module.exports = function (_passport) {}
//serialize the user for the session
passport.serializeUser(function (user, done) {
done(null, user.id);
});

//deserialize the user
passport.deserializeUser(function (id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});

passport.use('facebook', new FacebookStrategy({
   clientID: 'XXXXXXXXXX',
   clientSecret: 'YYYYYYYYYYYYYYY',
   callbackURL: " http://localhost:3000/auth/facebook/callback",
   enableProof: true,
   profileFields: ['id', 'displayName', 'photos', 'email']
   },
   function (accessToken, refreshToken, profile, done) 
   
  { let newUser = new User();
   // set the user's facebook credentials
   newUser.facebook.email = profile.emails[0].value,
   newUser.facebook.fullName = profile.displayName,
   
   User.findOne({email:newUser.facebook.email }, function(err, user) {
   if(!user) {
   newUser.save(function(err, newUser) {
   if(err) return done(err);
   done(null,newUser);
   });
   } else {
   done(null, user);
   }
   });
   }
  ));

这是我用于初始化应用程序的 index.js 代码

const rfc = require('rfc-3986');
const express = require('express');
const bodyParser = require('body-parser');
var routes = require('./routes/routes'); //importing route
require('./models/userModel')

app = express();
port = 3000;

require("./config/db"); app.get('/success', (req, res) => res.send("You have successfully logged in"));
app.get('/error', (req, res) => res.send("error logging in"));

const passport = require("passport");
app.use(passport.initialize());
app.use(passport.session());
require('./config/passport')(passport);
app.set(rfc)
routes(app, passport);
app.set('view engine', 'ejs')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))

app.listen(port,()=>{
    console.log('server listening on localhost:' + port)
});

这是我用于应用路由的 routes.js

app.get('/auth/facebook',
  passport.authenticate('facebook',  {scope:"email"}));

app.get('/auth/facebook/callback',
  passport.authenticate('facebook', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/success');`module.exports = function(app, passport) {
app.get('/auth/facebook',
  passport.authenticate('facebook',  {scope:"email"}));

app.get('/auth/facebook/callback',
  passport.authenticate('facebook', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/success');
  });
}

  });
}

这是我在浏览器上遇到的错误

这是终端上的相同错误

4

0 回答 0