Tôi có đoạn mã sau:lỗi CORS với chức năng Facebook callback
app.js:
var passport = require('passport')
, FacebookStrategy = require('passport-facebook').Strategy
, ...
passport.serializeUser(function(user, done) {
console.log('serializing user')
done(null, user);
})
passport.deserializeUser(function(obj, done) {
console.log('deserializeUser')
done(null, obj)
})
passport.use(new FacebookStrategy({
clientID: FBAPP.id,
clientSecret: FBAPP.secret,
callbackURL:
"http://www.mylocal.com:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
// asynchronous verification, for effect...
process.nextTick(function() {
return done(null, profile)
})
}
))
app.get('/auth/facebook', passport.authenticate('facebook',
{ scope: ['email, user_likes, user_photos, publish_actions'] }))
app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
successRedirect: '/loginsuccess', failureRedirect : '/loginfail' }))
app.get('loginsuccess', function(req, res) {
console.log('Login success')
res.send(200, 'ok')
})
app.get('/loginfail', function(req, res) {
console.log('Login error')
res.send(401, 'error')
})
Phần góc:
factory('FacebookFactory', ['$http', '$q', function($http, $q) {
var get = function() {
var deferred = $q.defer();
$http({method: 'GET', url: '/auth/facebook'}).
success(function(data, status, headers, config) {
deferred.resolve(data);
}).
error(function(data, status, headers, config) {
deferred.reject(data);
});
return deferred.promise;
};
return {
get: get
};
}])
tôi nhận được luôn lỗi này và đã làm nhiều lần nhưng không thành công.
XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?
response_type=code&redirect_uri=http%…
user_likes%2C%20user_photos%2C%20publish_actions&client_id=xxxxxxxxxxx.
No 'Access-Control-Allow-Origin' header
is present on the requested resource. Origin '[basic
links]http://www.mylocal.com:3000' is therefore
not allowed access.
Bất kỳ ai có ý tưởng? Tôi đã thử nó chỉ trong góc cạnh nhưng sau đó nó không hoạt động trong Safari nhưng trong Chrome và FF nó hoạt động hoàn hảo.
www.mylocal.com:3000 = localhost: 3000
cùng một vấn đề ở đây! bạn đã quản lý để tìm một giải pháp? –
Thực tế là không. Bên cạnh đó khởi động lại từ đầu với một ứng dụng mới ở phía Facebook. Nó đã làm việc nhưng so sánh không cho thấy bất kỳ sự khác biệt nào. –
Bạn có lẽ cần sử dụng $ http.jsonp() không? Chỉ cần đoán thôi. –