2016-04-18 13 views
9

Sto creando un'app di nodo e quando provo a utilizzare il passaporto con Facebook, il callback di verifica non viene eseguito (non viene registrato nulla). Qualsiasi aiuto sarebbe apprezzato.Passport Facebook Verifica richiamata non chiamata

var express = require('express'); 
var routes = require('./routes/routes.js'); 
var layout = require('./routes/layout.js'); 
var facebook = require('./routes/facebook.js'); 
var editprof = require('./routes/editprof.js'); 
var app = express(); 
var vogels = require('vogels'); 
var passport = require('passport'); 
var FacebookStrategy = require('passport-facebook').Strategy; 
var configAuth = require('./config/auth'); 


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

...

passport.use(new FacebookStrategy({ 

    // pull in our app id and secret from our auth.js file 
    clientID  : configAuth.facebookAuth.clientID, 
    clientSecret : configAuth.facebookAuth.clientSecret, 
    callbackURL  : 'http://localhost:8080/auth/facebook/callback' 

}, 

// facebook will send back the token and profile 
function(token, refreshToken, profile, done) { 
    console.log("TOKEN",token); 
    // asynchronous 
    process.nextTick(function() { 
     console.log("TOKEN",token); 
     console.log("ID", profile.id); 
     return done(null, profile); 

    }); 

})); 

...

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

Perché questo non è ancora risposto? – aditya

+0

Ho lo stesso problema. L'hai mai aggiustato? –

risposta

0

Ho avuto lo stesso problema e che è stato un problema di DNS con il graph.facebook.com. Ciò impedisce al modulo dietro passport-facebook di ottenere il token FB. Il callback verify viene quindi saltato.

È possibile verificare se il problema è lo stesso con i js snippet qui:

const dns = require('dns') 
dns.lookup('graph.facebook.com', console.log) 

Se questo codice restituisce qualcosa di simile a:

{ Error: getaddrinfo ENOTFOUND graph.facebook.com 
    at errnoException (dns.js:28:10) 
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:73:26) 
    code: 'ENOTFOUND', 
    errno: 'ENOTFOUND', 
    syscall: 'getaddrinfo', 
    hostname: 'graph.facebook.com' } 

Allora il problema è causato proprio da un DNS problema.

Ci sono diversi modi di fissare il problema di DNS, ma la più semplice per me è stato quello di modificare manualmente il mio file /private/etc/hosts sul mio Mac:

Fase 1: Get IP graph.facebook.com s':

nslookup graph.facebook.com 

Fase 2: Aggiornare il/private/etc/hosts:

sudo vim /private/etc/hosts 

Basta aggiungere una nuova riga nella parte inferiore del file (ad es. graph.facebook.com)

Fase 3: prova il dns.lookup('graph.facebook.com', console.log) ancora: Se questo è ora risolto, che il comando deve restituire qualcosa di simile a:

null '157.240.8.18' 4 

Spero che questo risolve il problema.

Cheers,

Nic

Problemi correlati