2017-01-08 73 views
0

我想部署一個使用護照facebook戰略的應用程序。我一直在本地主機上測試我的應用程序,然後嘗試將其部署到AWS。MEAN stack facebook登錄

一切似乎在我的本地機器上正常工作,但是當我部署我試圖登錄與多個Facebook帳戶。

我在API調用保存接收到的變量和檢索的通過角

然而,我的第一個身份驗證的用戶,似乎一切都工作正常,但是當第二個用戶進行身份驗證它將取代他的變量,如用戶名,個人資料圖片那些等等。

我知道它爲什麼這樣做。但我並不立即想到一個解決方案。

這裏是我的服務器端代碼時,我驗證

app.get('/login/facebook', 
    passport.authenticate('facebook')); 

app.get('/login/facebook/return', 
    passport.authenticate('facebook', { failureRedirect: '/login' }), 
    function(req, res) { 
    res.redirect('/'); 
    UserID = req.user.id; 
    UserDisplayName = req.user.displayName; 

    UserProfileImage = req.user._json.picture.data.url; 
    console.log(req.user._json.picture.data.url) 

    var User = UserID + UserDisplayName; 
    var ProfilePicture = UserProfileImage 
    res.json({name: User , url: ProfilePicture}); 
    }); 

app.get('/profileInfo', function(req, res){ 
    var User = UserID + UserDisplayName; 
    var ProfilePicture = UserProfileImage 
    res.json({name: User , url: ProfilePicture}); 

}); 

回答

0

你如何存儲你的用戶?

從你的代碼中我發現你將用戶的ID保存在UserID變量中,但是當下一個用戶登錄時它將被覆蓋。

我只quessing因爲我看不到你的整個代碼,但嘗試這樣的事:

var users = {}; 

app.get('/login/facebook/return', 
    passport.authenticate('facebook', { failureRedirect: '/login' }), 
    function(req, res) { 

    // save user to users object 
    users[req.user.id] = { 
     displayName: req.user.displayName, 
     profileImage: req.user._json.picture.data.url 
    } 

    res.redirect('/'); 
    }); 

// you need to use some kind of sessions or cookies to know which user this is 
// for simplicity let's assume you get profile by user's id /profileInfo/:id 
app.get('/profileInfo/:id', function(req, res) { 

    res.json(users[req.params.id]); 

});