如何使用passport.js从谷歌获取电子邮件ID,名称等数据?

时间:2014-02-27 02:41:15

标签: javascript node.js authentication passport.js

我是node.js环境的新手,我使用passport.js进行身份验证。 我知道如何使用passport-google进行身份验证,但我不知道如何将经过身份验证的Google帐户的电子邮件ID,姓名,照片等数据转换为html表单。 以下是server.js

..
var passport = require('passport')
..
app.get('/auth/google', passport.authenticate('google'));
app.get('/auth/google/return', passport.authenticate('google', { successRedirect: '/',
                                failureRedirect: '/login' }));

request.js文件是

var passport = require('passport');
var GoogleStrategy = require('passport-google').Strategy;

passport.use(new GoogleStrategy({
returnURL: 'http://localhost:9000/profilepage.html',
realm: 'http://localhost:9000'
},
function(identifier, profile, done) {
User.findOrCreate({ openId: identifier }, function(err, user) {
  done(err, user);
});
}
));

1 个答案:

答案 0 :(得分:1)

配置文件数据将填充到profile的回调函数的第二个参数(名为GoogleStrategy)中。看一下这段代码示例:https://github.com/jaredhanson/passport-google/blob/master/examples/signon/app.js

您可以访问以下用户个人资料信息:

function(identifier, profile, done) {
  var userData = {identifier: identifier};

  // append more data if needed
  userData.email = profile.emails[0];
  userData.displayName = profile.displayName;
  userData.fullName = profile.familyName + " " + profile.givenName;
  // id is optional
  if (profile.id) {
    userData.id = profile.id;
  }

  return done(null, userData);
});