I have this problem, i'm trying to setup facebook authentication with express js/passport js and the redirect is being blocked , CORS Missing Allow Origin enter image description here
--- this the facebookStrategy :
const passport = require('passport')
const FacebookStrategy = require('passport-facebook').Strategy
const User = require('../models/User.js')
require('dotenv').config()
passport.use(new FacebookStrategy({
clientID: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_SECRET_KEY,
callbackURL: process.env.FACEBOOK_CALLBACK_URL
},
async (accessToken, refreshToken, profile, done) => {
User.findOne({ _id: profile.id }).then(user => {
if (user) {
// Already have a record
done(null, user)
} else {
// Add new record
new User({ _id: profile.id, username: profile.displayName })
.save()
.then(user => done(null, user))
}
})
}))
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user);
});
});
module.exports = passport
--- this is the router :
const {Router} = require('express')
const router = Router()
const passport = require("../config/passport.js");
// Route for initiating Facebook authentication
router.get('/facebook', passport.authenticate('facebook'))
// Callback route for Facebook authentication
router.get('/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }),
(req, res) => {
res.redirect('/main')
}
);
module.exports = router
--- and this is the server
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors');
const morgan = require('morgan');
const passport = require('passport');
const session = require('express-session');
const authRoute = require("./routes/authRoute.js");
const facebookRoute = require("./routes/facebookRoute.js");
const app = express();
app.use(morgan('combined'));
app.use(bodyParser.json());
app.use(cors());
// Use express-session middleware for sessions
app.use(session({
secret: '',
resave: false,
saveUninitialized: false
}));
// Initialize Passport
app.use(passport.initialize());
app.use(passport.session())
// Include Passport Facebook authentication strategy
// Include auth routes
app.use(authRoute)
app.use('/auth', facebookRoute)
// Connect to MongoDB
mongoose.connect('mongodb://localhost....')
.then(() => {
console.log("Connected to MongoDB");
})
.catch((error) => {
console.error("MongoDB connection error:", error);
});
const port = process.env.PORT || 8081;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
i hope i can find a solution why is the xhr being blocked