谷歌加上用户年龄范围使用passport.js

时间:2014-10-23 10:41:37

标签: javascript node.js google-oauth passport.js

我使用了来自Jared Hanson(https://github.com/jaredhanson/passport-google-oauth)的OAuthStrategy2的passportjs。我想在配置文件对象中获取用户年龄范围,但我无法获得它。即使我在范围内使用https://www.googleapis.com/auth/plus.login,谷歌保证也会返回年龄范围。有没有办法通过护照获取此信息或我将被迫提出REST请求谷歌过去的护照?

这是使用以下范围进行身份验证的护照:

        app.get('/auth/login/google',
        passport.authenticate('google', {
            scope: ['https://www.googleapis.com/auth/plus.login',
                'https://www.googleapis.com/auth/userinfo.email'
            ]
        }),
        function(req, res) {});

这是我得到的结果:

{ 
  provider: 'google',
  id: '115346138147341087148',
  displayName: 'Testing Account',
  name: { familyName: 'Account', givenName: 'Testing' },
  emails: [ { value: undefined } ],
  _raw: '{\n "id": "115346138147341087148",\n "name": "Testing Account",\n "given_name":       "Testing",\n "family_name": "Account",\n "link":   "https://plus.google.com/115346138147341087148",\n "picture":   "https://lh3.googleusercontent.com/-  XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg",\n "gender": "female",\n "locale": "en"\n}\n',
  _json: 
   { id: '115346138147341087148',
     name: 'Testing Account',
     given_name: 'Testing',
     family_name: 'Account',
     link: 'https://plus.google.com/115346138147341087148',
     picture: 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg',
  gender: 'female',
  locale: 'en' } 
}

提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

当有人指出其他地方(可能是Stackoverflow或类似的东西)时,使用passport-google获取更多信息是不可能的。您和我将不得不使用官方Google API方法来获取更多信息。遗憾的是,没有选择将profileFields添加到策略中以在响应中请求更多信息(可以使用passport-facebook)。