2016-07-15 7 views
0

パスポートを初めて使用すると、ストラテジコールバック内のデータをログに記録すると、コンソールに表示されないことがわかります。これはどのように動作するのですか、何か間違っていますか?Passportコールバックをコールしない

passport.use(new GoogleStrategy({ 
    clientID: process.env.GOOGLE_CLIENT_ID, 
    clientSecret: process.env.GOOGLE_CLIENT_SECRET, 
    callbackURL: process.env.CALLBACK_URL, 
    passReqToCallback: true 
}, function (accessToken, refreshToken, profile, done) { 
    console.log('this should be displayed'); 
    done(profile) 
    } 
); 

ルートは次のようになります。私は同じ問題を持っていたし、このように認証を呼び出すことによってそれを解決し

app.get('/api/v1/authenticate/google', passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login'] })); 

答えて

1

passport.authenticate('facebook', { 
    scope: ['email', 'public_profile', 'user_likes', 'user_birthday'], 
    callbackURL: "http://localhost:1337" + req.url 
}, function (err, user) { 
    if (err) return res.negotiate(err); 
    // Do something 
})(req, res, next); 
-1

あなたがpassReqToCallback:trueを設定した場合、あなたのコールバックが呼び出されます最初の引数としてreqを指定します。

あなたはそうdoneが正しい位置になります function (req, accessToken, refreshToken, profile, done)、 としてそれを呼び出す必要があります。

編集: 私はあなたがメインのコールバックを意味することを認識します。 これは2つのステップのプロセスなので、process.env.CALLBACK_URLは、パスポートミドルウェアが登録されたルートを指す必要があります。ドキュメントから

callbackURL: "http://yourdormain:3000/auth/google/callback",

app.get('/auth/google/callback', 
    passport.authenticate('google', { 
     successRedirect: '/auth/google/success', 
     failureRedirect: '/auth/google/failure' 
})); 
の場合
関連する問題