2013-07-01 73 views
0

我在ExpressJS Web应用程序中使用PassportJSpassport-google-oauthPassportJS配置文件未定义名称

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.displayNameprofile.name.familyNameprofile.name.givenName是不确定的。当我使用Passport Facebook的回调时,完全没有问题。

如何在使用Google帐户登录时获取用户名?

+0

只是打印配置文件以找出该对象的可用成员。 (例如,'console.log(profile);') – Kamrul

回答

0

您需要申请它,包括'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', ...] 
} 
2

当我检查。好像是比什么是官方样片导致人们的困惑,包括我在多个参数..

而不是

function(accessToken, refreshToken, profile, done) 

使用

function(req, accessToken, refreshToken, profile, done) 
+2

godlike post for profile undefined and profile.emails [0] .value = undefined问题,请标记为解决方案或upvote。在此之后,console.log(配置文件)工作。我正在研究Facebook流量。 – 2016-05-16 21:56:30