Jack Guy
Jack Guy

Reputation: 8523

Passport Node.js CORS error

I've tried a million ways to get passport to work with my application to no avail. Every attempted login to every provider (Facebook, Google, Twitter, Microsoft) has resulted in an error like this one:

XMLHttpRequest cannot load https://www.google.com/accounts/o8/ud?openid.mode=checkid_setup&openid.ns=h…2F%2Ftest.sl%2Fauth%2Fgoogle%2Freturn&openid.realm=http%3A%2F%2Ftest.sl%2F. 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://test.sl' is therefore not allowed access.

My application isn't that complicated, here's a summary of my server code.

var express = require('express');
var ppGoogle = require('passport-google-oauth').OAuth2Strategy;
var app = express();

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/public'));
//There's more config

app.listen(7230);

app.get('/auth/google', passport.authenticate('google'));
app.get('/auth/google/return', passport.authenticate('google', {
   successRedirect: '/main',
   failureRedirect: '/login'
}));

passport.use(new ppGoogle({
    clientID: '',
    clientSecret: '',
    callbackURL: 'http://test.sl/auth/google/return'
},
function (accessToken, refreshToken, profile, done)
{
    console.log('done');
}));

Anyone know the solution? This thing is driving me crazy.

Upvotes: 2

Views: 3020

Answers (1)

SLaks
SLaks

Reputation: 887415

You're trying to load Google's OAuth prompt over AJAX instead of a page navigation.

You should replace your AJAX request with a normal navigation,

Upvotes: 9

Related Questions