3

这是我的 console.log(profile);

{ 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时它起作用了

4

2 回答 2

2

根据自述文件,该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);
}));
于 2015-09-17T22:09:24.443 回答
0

您需要在您的 LinkedIn APP 中授予权限,如下所示。

在这张图片中,你可以看到我已经给予了很多许可,就像在这个电子邮件地址中一样,也检查一下,我会明白的

在这张图片中,你可以看到我已经给予了很多许可,就像在这个电子邮件地址中一样,也检查一下,我会明白的

于 2015-05-05T17:17:53.247 回答