2013-07-02 316 views
7

我正在嘗試第一次設置護照,並且只使用一個Google登錄選項。我在谷歌apis註冊,所以我有所有的設置。相關的代碼如下,但是當我的應用程序調用'/auth/google/'時,它只是失敗,沒有響應或錯誤消息。我已經調整了一些配置的方式無濟於事。我還用一個console.log替換了帶有匿名函數的passport.authenticate('google'),以仔細檢查我的Web服務是否正常運行。所以我知道它正在進入passport.authenticate('google')Passport.js身份驗證不起作用

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

編輯:一個按鈕 這裏是我的HTTP請求,我使用的角度和這個功能是綁在NG-點擊。

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

這些日誌返回任何

+0

你真的有沒有錯誤信息?超時也許?它如何失敗? – maxdec

+0

我一直無法趕上或得到任何回報。它似乎失敗,沒有任何類型的返回。也許有那個電話配置錯誤。我會添加我的ajax代碼以防萬一。 –

回答

3

你需要調用done()中間件內的GoogleStrategy

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

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

發現這個here