使用错误代码作为“FacebookTokenError”实现passport-facebook身份验证时出错:redirect_uri不是绝对URI检查 RFC 3986

问题描述

我正在使用本地主机来测试护照 Facebook 身份验证,我一直在尝试实施身份验证,但遇到了上面提到的错误我的dns地址,但无济于事, 这是我用于 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',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',{ failureRedirect: '/login' }),function(req,res) {
    // Successful authentication,redirect home.
    res.redirect('/success');`module.exports = function(app,passport) {
app.get('/auth/facebook',redirect home.
    res.redirect('/success');
  });
}

  });
}

this is the error i get on browser

this is the same error on terminal

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...