facebook 인증과 함께 node, express 및 passport를 사용하고 있습니다.
나는 다음과 같은 경로 (/facebook/auth/callback
는 콜백 URL)를 가지고 인증이 내가 예상 한대로 내가 페이지 auth-success
뷰를 가지고 성공여권 인증 실패로 인해 리디렉션 루프가 발생합니다.
function render(page, req, res) {
var user = null;
if (req.user) {
user = req.user.toObject();
user.isLoggedIn = true;
}
res.render(page, { user: user });
}
app.get('/auth-failure', function (req, res) {
res.render('auth-failure');
});
app.get('/auth-success', function (req, res) {
render('auth-success', req, res);
});
app.get('/facebook/auth', passport.authenticate('facebook', { scope: [ 'email', 'user_about_me', 'publish_actions']}));
app.get('/facebook/auth/callback', passport.authenticate('facebook', { failureRedirect: '/auth-failure', successRedirect: '/auth-success' }));
. 그러나 인증이 실패하고 페이스 북이 다음으로 돌아 오면 : http://localhost:3000/facebook/auth/callback?error_code=2102&error_message=User+is+not+a+test+user+owned+by+the+application#=
나는 auth-failure
보기를 얻지 못했다!
내가 일을 확인하려고 나는에 실패 라우터를 교체 :
app.get('/facebook/auth/callback', function (req, res) {
res.redirect('/auth-failure');
});
크롬에서 실행, 나는 메시지가 : 대신에, 파이어 폭스는 나에게 페이지를 반환
그러면 auth-failure
보기가 성공적으로 렌더링되었습니다.
passport.js Facebook 오류 인증의 문제점은 무엇입니까?
오류 페이지가 표시되는 이유는 무엇입니까? @ 매트 Bakaitis 코멘트에 관해서는
: 여기
나를 기능을 직렬화 및 역 직렬화입니다 :
// serialize sessions
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findOne({ _id: id }, function (err, user) {
done(err, user);
});
});
그것은 예제 작품을 나타납니다 Firefox에서. – jhtong
@toiletfreak : Firefox에서이 잘못된 동작의 이미지를 첨부했습니다. – Naor
passport.serialize 또는 passport.deserialize 코드를 변경 했습니까? –