2013-07-02 2 views
7

Sto tentando di impostare il passaporto per la prima volta e di andare con una sola opzione di accesso a google. Mi sono registrato con google apis quindi ho tutto questo setup. il codice relavant è sotto, ma quando la mia app effettua la chiamata a '/auth/google/' fallisce senza alcuna risposta o messaggio di errore. Ho cambiato la configurazione un sacco di modi senza successo. Ho anche sostituito lo passport.authenticate('google') con una funzione anonima con un console.log per ricontrollare che il mio servizio Web funziona correttamente e lo è. Quindi so che sta arrivando allo passport.authenticate('google').Autenticazione Passport.js non funzionante

// serialize session 
    passport.serializeUser(function (user, done) { 
     done(null, user.id); 
    }); 

    passport.deserializeUser(function (obj, done) { 
     done(null, obj); 
    }); 

     // use google strategy 
    passport.use(new googleStrategy({ 
     clientID: config.google.clientID, 
     clientSecret: config.google.clientSecret, 
     callbackURL: config.google.callbackURL, 
     scope: 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile' 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    console.log(profile); 
    } 
)); 


    app.use(passport.initialize()); 
    app.use(passport.session()); 


    app.get('/auth/google', passport.authenticate('google')); 
    app.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/', scope: 'https://www.google.com/m8/feeds' }), signin); 

EDIT: Ecco la mia richiesta http, sto usando angolare e questa funzione è legata ad un ng clic su un pulsante.

$scope.signIn = function() { 
    $http({method: 'GET', url: '/auth/google'}). 
     success(function (data, status, headers, config) { 
      console.log('success'); 
     }). 
     error(function (data, status, headers, config) { 
      console.log(data); 
      console.log(status); 
      console.log(headers); 
      console.log(config); 
     }); 
}; 

tali registri ritornano nulla

+0

È veramente alcun messaggio di errore? Forse un timeout? Come fallisce? – maxdec

+0

Non sono stato in grado di catturare o ottenere nulla indietro. Sembra fallire senza alcun tipo di ritorno. Forse la chiamata è configurata in modo errato. Aggiungerò anche il mio codice Ajax per ogni evenienza. –

risposta

3

è necessario chiamare done() all'interno del middleware per la GoogleStrategy

passport.use(new GoogleStrategy({ 
     ... 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    console.log(profile); 

    // Add this 
    done(null, profile);//profile contains user information 
}); 

trovato questo here