2013-11-01 54 views
3

这里是我的console.log(profile);passport-linkedin-oauth2不返回电子邮件地址

{ provider: 'linkedin', 
    id: 'LJitOAshpU', 
    displayName: 'Monist BD', 
    name: { familyName: 'BD', givenName: 'Monist' }, 
    emails: [ { value: undefined } ], 
    _raw: '{\n "firstName": "Monist",\n "formattedName": "Monist BD",\n "id": " 
LJitOAshpU",\n "lastName": "BD"\n}', 
    _json: 
    { firstName: 'Monist', 
    formattedName: 'Monist BD', 
    id: 'LJitOAshpU', 
    lastName: 'BD' } } 

这里是我的路由代码:

app.get('/auth/linkedin',passport.authenticate('linkedin', { scope: ['r_emailaddress', 'r_basicprofile', 'rw_nus'],state: 'DCEEFWF45453sdffef424' })); 

app.get('/auth/linkedin/callback',passport.authenticate('linkedin', { failureRedirect: '/' }),users.authCallback); 

这里是passport.js配置:

passport.use(new LinkedInStrategy({ 
    clientID: config.linkedIn.clientID, 
    clientSecret: config.linkedIn.clientSecret, 
    callbackURL: config.linkedIn.callbackURL, 
    profileFields: ['id', 'first-name', 'last-name', 'email-address','public-profile-url'], 
    passReqToCallback: true 
    }, 
    function(req,token, refreshToken, profile, done) { 

    console.log(profile); 
})); 

为什么我在邮件值越来越不确定?当我使用passport-linkedin

回答

0

时,它就起作用了,您需要在您的LinkedIn APP中授予权限,如下所示。

在此图像中,你可以看到我已经给许多权限想在这个EMAILADDRESS同时检查,所以我会得到

IN this image you can see i have given many permission like in this emailaddress also check so i will get that

0

按照readme,该scope选项必须设置在Strategy对象中。您在passport.authenticate中将其设置为忽略。

为了解决这个问题更改您的代码:

app.get('/auth/linkedin',passport.authenticate('linkedin', { state: 'DCEEFWF45453sdffef424' })); 

app.get('/auth/linkedin/callback',passport.authenticate('linkedin', { failureRedirect: '/' }),users.authCallback); 

...

passport.use(new LinkedInStrategy({ 
    clientID: config.linkedIn.clientID, 
    clientSecret: config.linkedIn.clientSecret, 
    callbackURL: config.linkedIn.callbackURL, 
    scope: ['r_emailaddress', 'r_basicprofile', 'rw_nus'], 
    profileFields: ['id', 'first-name', 'last-name', 'email-address','public-profile-url'], 
    passReqToCallback: true 
    }, 
    function(req,token, refreshToken, profile, done) { 

    console.log(profile); 
})); 
相关问题