2016-04-18 60 views
9

我正在製作一個節點應用程序,當我嘗試使用Facebook上的護照時,驗證回調不會運行(不記錄任何內容)。任何幫助,將不勝感激。護照Facebook驗證回調未調用

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

這是爲什麼沒有回答? – aditya

+0

我有同樣的問題。你有沒有修好它? –

回答

0

我有同樣的問題,那就是與graph.facebook.com DNS問題。這可以防止passport-facebook後面的passport-oauth2模塊獲取FB令牌。然後跳過verify回調。

您可以測試您的問題是否與JS相同的代碼片段在這裏:

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

如果這個代碼返回類似的東西:

{ 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' } 

然後你的問題確實是一個DNS引起的問題。

有固定的是DNS問題的多種方式,但最簡單的對我來說是手動編輯我的Mac上我/private/etc/hosts文件:

步驟1:獲取graph.facebook.com的IP:

nslookup graph.facebook.com 

第2步:更新您的/private/etc/hosts

sudo vim /private/etc/hosts 

只需在文件底部添加新行(例如graph.facebook.com)

第3步:測試dns.lookup('graph.facebook.com', console.log)再次: 如果現在已經得到解決,該命令應返回的東西:

null '157.240.8.18' 4 

希望這會解決您的問題。

乾杯,

尼克