0

我在 ExpressJS 网络应用程序中使用PassportJSpassport-google-oauth 。

var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
  clientID: GOOGLE_CLIENT_ID,
  clientSecret: GOOGLE_CLIENT_SECRET,
  callbackURL: CALLBACK
},
function(accessToken, refreshToken, profile, done) {
  console.log(profile.displayName);
  console.log(profile.name.familyName);
  console.log(profile.name.givenName);
  ...
}));

问题是profile.displayName和是未定义的profile.name.familyNameprofile.name.givenName当我将回调与Passport Facebook一起使用时,完全没有问题。

使用谷歌账号登录时如何获取用户名?

4

2 回答 2

5

当我检查时,它似乎比官方样本中的参数更多,导致包括我在内的人们感到困惑..

而不是

function(accessToken, refreshToken, profile, done)

利用

function(req, accessToken, refreshToken, profile, done)
于 2015-10-23T06:57:30.827 回答
1

您需要请求它,包括'https://www.googleapis.com/auth/userinfo.profile'在您的范围内。

passport.use(new GoogleStrategy({
  clientID: GOOGLE_CLIENT_ID,
  clientSecret: GOOGLE_CLIENT_SECRET,
  callbackURL: CALLBACK,
  scope: ['https://www.googleapis.com/auth/userinfo.profile','email', ...]
}
于 2013-11-16T09:00:33.213 回答