2017-06-17 2 views
0

Ich verwende Express + Passport für Google-Authentifizierung für meine Anwendung.pass.authenticate injects null-Objekt für die Anfrage in Google Login

Hier ist meine Route:

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)); 

Ich erhalte einen Fehler Kann nicht Eigenschaft 'user' von null in Zeile 1 in authCallback Funktion lesen.

Ich habe versucht, dies zu debuggen, konnte aber keine Lösung finden.

Bitte lassen Sie mich wissen, wenn mehr Code benötigt wird.

Antwort

1

Auth Callback sollte nicht req haben, res. es gibt 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

Das hilft aber das genaue Problem war, ich wollte einen Callback übergeben, um die get Funktion auszugeben, übergab aber den Callback an die Passfunktion. Ihre Lösung hat mir geholfen, dieses Problem zu finden. Vielen Dank! –

1

Dank der Antwort von Dinesh.

Dies löste das Problem genau.

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

statt

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

Der Rückruf gemeint ist, zu übergeben API zum Ausdruck bringen, sondern zu Pass-API übergeben wird.

Verwandte Themen