Helpex - Trao đổi & giúp đỡ Đăng nhập
12

Tôi có mã Node sau bằng passport-google-oauth ...

app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email'] }));

app.get('/auth/google/callback', function(req,res) {
    console.log("callback");
    passport.authenticate('google', {
                successRedirect : '/signin',
                failureRedirect : '/signin'
    });
});

và ...

passport.serializeUser(function(user, done) {
    console.log("ser");
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    console.log("des");
    User.findById(id, function(err, user) {
        done(err, user);
    });
});

passport.use(new GoogleStrategy({

    clientID        : 'id',
    clientSecret    : 'key',
    callbackURL     : 'http://host/auth/google/callback',
},
function(token, rtoken, profile, done) {
   console.log("proc");
   console.log(profile);
   done(null, profile);
}));

Vấn đề là, cuộc gọi lại đang được gọi nhưng không có gì khác xảy ra. Hàm xử lý không bao giờ truy cập. Cuộc gọi lại kết thúc hết thời gian. Bất kỳ ý tưởng nơi tôi đã sai?

12 hữu ích 3 bình luận 2.2k xem chia sẻ
1

tôi vừa phát hiện ra rằng gói passport-google-oauth xuất những thứ sau:

exports.Strategy =
exports.OAuthStrategy = OAuthStrategy;
exports.OAuth2Strategy = OAuth2Strategy;

có nghĩa là "mặc định" (tức là. Strategy) hoàn toàn không phải là oauth2 ... Vì vậy, tốt hơn bạn nên sử dụng OAuth2Strategy một cách rõ ràng. nó đã làm việc cho tôi. Tôi đã mất hàng giờ đồng hồ để tìm ra đây là vấn đề ...

1 hữu ích 0 bình luận chia sẻ
1

Bạn đã không sử dụng phần mềm trung gian "passport.authenticate ('google')" bên trong tuyến đường thứ hai '/ auth / google / callback'.

tuyến đường thứ hai của bạn sẽ giống như:

app.get( '/auth/google/callback', 
    	passport.authenticate( 'google', { 
    		successRedirect: '/',
    		failureRedirect: '/login'
}));
Mở rộng đoạn mã

1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript node.js passport.js , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading