2017-06-17 8 views
0

私は自分のアプリケーションでGoogle認証にExpress + Passportを使用しています。passport.authenticateは、Googleログインでリクエストにnullオブジェクトを挿入します。

const authCallback = function(req, res) { 
    if (req.user._id) { 
     if (abc()) { return res.redirect('/app'); } 

     res.redirect('/profile/' + req.user._id.toString()); 
    } else { 
     res.redirect('/'); 
    } 
}; 

app.get('/auth/google/callback', passport.authenticate('google', authCallback)); 

私はauthCallback機能でライン1でヌルのプロパティ「ユーザー」を読み取ることができませんエラーを取得しています:

は、ここに私のルートです。

これをデバッグしようとしましたが、解決策が見つかりませんでした。

もっとコードが必要な場合は教えてください。

答えて

1

authコールバックにはreq、resが含まれていてはなりません。返すのはfunction(err, user, info) { }):

const authCallback = function(err, user,info) { 
     if (user._id) { 
      if (abc()) { return res.redirect('/app'); } 

      res.redirect('/profile/' + user._id.toString()); 
     } else { 
      res.redirect('/'); 
     } 
    }; 

    app.get('/auth/google/callback', passport.authenticate('google', authCallback)); 
+0

これは役に立ちますが、正確な問題は、関数を呼び出すためにコールバックを渡したかったのですが、コールバックをパスポート関数に渡していました。あなたのソリューションは、私がその問題を見つけるのを助けました。ありがとう! –

1

Dineshからの回答に感謝します。

これは問題を正確に解決しました。

app.get('/auth/google/callback', passport.authenticate('google'), authCallback); 

代わりの

app.get('/auth/google/callback', passport.authenticate('google', authCallback)); 

コールバックがAPIを取得表現するために渡されることを意味しているが、パスポートのAPIに渡されています。

関連する問題