【问题标题】:Error when asking for username with Facebook authentication使用 Facebook 身份验证询问用户名时出错
【发布时间】:2016-04-14 17:42:42
【问题描述】:

当我的用户注册时,我希望他们也有一个用户名。在用户模式中,有一个用户名字段是必需的且唯一的。但是,当用户通过护照注册 Facebook 时,无法输入此字段,因此会引发错误。

我想出的唯一解决方案是在注册时为他们分配一个随机用户名,然后要求他们提供一个真实的用户名,但这似乎不是最好的主意。

我能做什么?

【问题讨论】:

  • 您是否使用护照进行本地身份验证,您是否使用 Twitter(或其他社交媒体)登录?
  • 两者。显然,我可以要求本地身份验证的用户名,但是当涉及到 Facebook 身份验证时,并不是每个人都有我可以使用的用户名。
  • 确实如此。除了在登录后询问用户名之外,我认为没有其他选择。
  • 为什么不能输入字段?请向我们展示您的护照实施情况。
  • 也许您应该在passport Github repository 上打开一个问题,直接向作者寻求解决方案,然后与我们分享...

标签: node.js mongodb express mongoose passport.js


【解决方案1】:

根据我听到的消息,您希望将用户名与您的 Facebook 信息一起存储。

你需要加加passReqToCallback: true

passport.use(new FacebookStrategy({
    consumerKey: FACEBOOK_CONSUMER_KEY,
    consumerSecret: FACEBOOK_CONSUMER_SECRET,
    callbackURL: "http://www.example.com/auth/twitter/callback",
    passReqToCallback: true
  },
  function(req, token, tokenSecret, profile, done) {
     ...
    Store in database
  }
));

用户信息将存储在 req.body 对象中

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2019-03-25
    相关资源
    最近更新 更多