【问题标题】:Node Facebook Passport only returns certain fields regardless of sent scopeNode Facebook Passport 只返回某些字段,无论发送范围如何
【发布时间】:2016-09-01 04:34:26
【问题描述】:

我目前正在尝试使用 Koa-PassportKoajs 2 来实现 Facebook 的 OAUTH

一切正常,我可以登录而不能登录,但无论我在范围内发送什么,我只能得到:

{ passport:
   { user:
      { id: '1015401',
        username: undefined,
        displayName: 'John Doe',
        name: [Object],
        gender: undefined,
        profileUrl: undefined,
        provider: 'facebook',
        _raw: '{"name":"John Doe","id":"1015401"}',
        _json: [Object] } } }

我试过添加

scope: ['email', 'public_profile'] 似乎可以在 Facebook 端使用,因为我可以看到我的应用程序请求的所有信息都在那里。

但是当我点击确定并被重定向回我的应用程序时,我又一次丢失了 profile_pic 字段和 email 字段之类的东西。任何有关如何取回这些字段的信息都将非常感谢。我会在 github 页面上打开一个问题,但有些问题可以追溯到 2013 年,它似乎并没有得到太多维护。

【问题讨论】:

    标签: node.js passport.js passport-facebook


    【解决方案1】:

    我遇到了同样的问题,通过以下操作解决了

    passport.js 中添加带有profileFields 的行:

    passport.use(new FacebookStrategy({
            clientID: clientID,
            clientSecret: clientSecret,
            callbackURL: callbackURL,
            profileFields: ['id', 'name', 'emails']
          },
    

    'emails' 将返回一个电子邮件数组,因此获取第一个值:

    newUser.facebook.email = profile.emails[0].value;
    

    让我们知道这是否对您有用,也许这对其他人也有帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多