使用Passport.js将Facebook数据链接到当前登录的用户

8

我正在使用passport.js,想知道是否可以将Facebook ID链接到已登录用户的帐户。类似于这样:

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);
        }
    }   
));
1个回答

18

有几种方法可以解决这个问题,但我认为最直接的方法之一是使用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
    }
  }   
));

太好了,Jared,谢谢你...还有感谢你让我免于使用everyauth :) - Pardoner
非常感谢,我也遇到了这个问题。这个 passReqToCallback 解决了一切!谢谢! - bbnn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接