1

Проблема: XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…lhost%3A8080%2Fapi%2Fauth%2Ffacebook%2Fcallback&client_id=1527429390857121. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.паспорта Facebook Стратегия, триггер маршрут с AJAX

Если я нажмите на ссылку в сообщении об ошибке я получаю autenticated и получить обратно в ДАННЫЕ JSON. Если я удалю клиентский js router everithing, то все будет хорошо. Но я пытаюсь создать приложение SPA.

Я не использую какой-либо специфический интерфейс, я использую маршрутизатор flatiron director и генерирую представление с рулями.

На стороне клиента:

var facebook = function() { 
     console.log('GET /auth/facebook'); 

     $.ajax({ 
     url: '/api/auth/facebook', 
     type: 'get', 
     dataType: 'jsonp', 
     cache: false 
     }); 
    }; 

// ROUTES =============================== 
var routes = { 
    ... 
    '/auth': { 
     '/facebook' : facebook, 
     '/twitter' : twitter, 
     '/google': google 
    }, 
    ... 
}; 

На ServerSide:

// send to facebook to do the authentication 
    router.get('/auth/facebook', passport.authenticate('facebook')); 

    // handle the callback after facebook has authenticated the user 
    router.get('/auth/facebook/callback', function(req, res, next) { 
     passport.authenticate('facebook', function (err, user, info) { 
      if (err) return next(err); 
      if (!user) return res.status(403).json(info); 

      req.logIn(user, function (err) { 
       if (err) { return next(err); } 
       return res.json({user: user, message: info}); 
      }); 
     })(req, res, next); 
    }); 

в server.js

... 
app.use('/api', router); 
... 
+0

Прошло некоторое время, но вам повезло с этим? Вы нашли решение? – Flavio

ответ

0

Вроде бы вопрос CORS:

Try следующее:

$ npm install cors

тогда в вашем server.js:

var cors = require('cors'); ... app.use(cors());

Для получения более подробной информации о модуле Корса: https://www.npmjs.com/package/cors

и на CORS и AJAX: http://www.bennadel.com/blog/2327-cross-origin-resource-sharing-cors-ajax-requests-between-jquery-and-node-js.htm

+0

Здравствуйте, к сожалению, я все равно получаю ту же ошибку. Если я вернусь к интерфейсной маршрутизации и сразу же удалю URL-адрес без ajax, это будет работать как шарм. – tsm

0

Try чтобы добавить его на сервер:

app.use(function (req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    next(); 
}); 
Смежные вопросы