2012-06-26 100 views
8

我正在使用passport.js,如果我可以將facebook id鏈接到登錄用戶的帳戶,我會受傷。事情是這樣的:將facebook數據鏈接到當前登錄的用戶Passport.js

passport.use(new FacebookStrategy({ 
     consumerKey: --- 
     consumerSecret: --- 
     callbackURL: "http://mycallback" 
    }, 
    function(token, tokenSecret, profile, done) { 
     if (user is logged in) 
      user = User.addfacebookId(user, profile.id) 
      done(user); 
     } 
    } 
)); 

回答

17

有幾個方法可以解決這個,但我認爲其中最直接的是使用passReqToCallback選項。啓用該功能後,req將成爲驗證回調的第一個參數,然後您可以檢查req.user是否存在,這意味着用戶已經登錄。此時,您可以將用戶與Facebook個人資料詳細信息和供應相同的用戶實例完成回調。如果req.user不存在,請照常處理。

例如:

passport.use(new FacebookStrategy({ 
    clientID: --- 
    clientSecret: --- 
    callbackURL: "http://mycallback" 
    passReqToCallback: true 
    }, 
    function(req, accessToken, refreshToken, profile, done) { 
    if (req.user) 
     // user is already logged in. link facebook profile to the user 
     done(req.user); 
    } else { 
     // not logged in. find or create the user based on facebook profile 
    } 
    } 
)); 
+0

這是完美的賈裏德謝謝...謝謝你從everyauth救了我:) – Pardoner

+0

非常感謝你,我也有這個問題。這passReqToCallback解決了一切!謝謝! – bbnn

+0

Woohooo非常感謝你。它的工作:D – Zeck

相關問題