我试图在我的NodeJs服务器上使用facebook身份验证。我来到http://scotch.io/的教程,并在使用REST客户端(Postman等)时使其在本地工作。
为了改进UI,我使用Angular JS作为前端。但是当我将一个http.get调用到我在NodeJs后端给出的特定路由时,我在chome和firefox中得到以下错误:
XMLHttpRequest无法加载https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http% ... 0%2Fapi%2Fauth%2Ffacebook%2Fcallback& scope = email& client_id = 3000000000006。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' localhost:8080'因此不允许访问。
我已经在StackOverflow上尝试了几种解决方案,但它仍然无效...... 我的NodeJ使用Express 4. *和CORS中间件。 对于Angular,我找到了几种启用CORS的方法,到目前为止还没有工作。
我希望你能帮助我:D提前谢谢!
答案 0 :(得分:1)
您可以在 Angular Controller 中使用passport.authenticate
,将请求发送到包含const plotbandPath = plotband.svgElem.d.split(' ')
plotbandPath[7] = plotbandPath[9] = newY
plotband.svgElem.animate({
d: plotbandPath
}, 300)
内容的 Express Server 。
这将停止你的角度调用facebook auth对话页面作为AJAX请求。
对我有用!
答案 1 :(得分:0)
我也正在使用Angular和Node / Express,以下功能对我来说也适用于我自己的后端服务(说实话我目前没有在Facebook上使用它),所以请查看:
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, Access-Control-Allow-Origin');
res.header("Access-Control-Max-Age", "86400"); // 24 hours
// intercept OPTIONS method
if ('OPTIONS' == req.method) {
res.send(200);
}
else {
next();
}
};
然后,您需要使用app.confiure()
方法,如下所示:
// configure Express
app.configure(function() {
app.use(allowCrossDomain);
...
});
在所有其他目标之前使用它非常重要!