首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MEAN stack facebook登录

MEAN stack facebook登录
EN

Stack Overflow用户
提问于 2017-01-08 23:26:34
回答 1查看 596关注 0票数 0

我正在尝试部署一个使用passport facebook策略的应用程序。我首先在本地主机上测试了我的应用程序,然后尝试将其部署到AWS。

在我的本地机器上似乎一切正常,但当我部署时,我尝试使用多个facebook帐户登录。

我将接收到的变量保存在api调用中,并通过angular检索这些变量

然而,我的第一个通过身份验证的用户,看起来一切正常,但当第二个用户通过身份验证时,它将覆盖他的变量,如用户名,个人资料图像等。

我知道它为什么要这么做。但我现在还没有想好解决方案。

以下是我在进行身份验证时的服务器端代码

代码语言:javascript
复制
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});

});
EN

回答 1

Stack Overflow用户

发布于 2017-01-09 03:25:33

你如何存储你的用户?

根据您的代码,我要求您将用户的id保存在UserID变量中,但是当下一个用户登录时,它将被覆盖。

我只是在发问,因为我看不到你的整个代码,但尝试如下所示:

代码语言:javascript
复制
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]);

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41534309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档