node.js - Passport Facebook 身份验证未提供电子邮件地址

标签 node.js facebook passport.js passport-facebook

我做了 Stackoverflow 中解释的所有方法,但没有成功

passport.use(new FacebookStrategy({
    clientID: 'CLIENT ID',
    clientSecret: 'CLIENT SECRET',
    callbackURL: "/auth/facebook/callback",
    profileFields:['id', 'emails', 'link', 'locale', 'name',
  'timezone', 'updated_time', 'verified', 'displayName']
  },
  function(accessToken, refreshToken, profile, done) {
    console.log(profile);
    var authId = 'facebook:' + profile.id;   
    for(var i = 0; i < users.length; i++){
      var user = users[i];
      if(user.authId === authId){   
        return done(null, user);
      }
    }

    var new_user = {
      'authId':authId,
      'displayName':profile.displayName
    };
    users.push(new_user);
    done(null, new_user);
  }
));

app.get(
  '/auth/facebook',
   passport.authenticate(
     'facebook',
     {scope:['email']}
   )
 );

但是在我的控制台

 _json:
   { id: 'MY ID',
     link: 'https://www.facebook.com/app_scoped_user_id/MY_ID/',
     locale: 'ko_KR',
     last_name: 'LAST_NAME',
     first_name: 'FIRST_NAME',
     timezone: 9,
     updated_time: '2016-06-26T06:25:28+0000',
     verified: true,
     name: 'MY NAME' } }

没有电子邮件字段有什么问题? 或者我的facebook账户授权有问题吗?

最佳答案

在 profileFields 对象中,使用“email”而不是“emails”。

profileFields:['id', 'emails', 'link', 'locale', 'name',
  'timezone', 'updated_time', 'verified', 'displayName']

替换为

profileFields:['id', 'email', 'link', 'locale', 'name',
  'timezone', 'updated_time', 'verified', 'displayName']

关于node.js - Passport Facebook 身份验证未提供电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241053/

相关文章:

java - OData 和 Facebook 见解

facebook - Omniauth-facebook 和设计 : if email exists

html - 验证静态路径,nodejs Express Passport html

node.js - Passport -facebook-token 与 Passport -facebook

angularjs - Angular 问题和 "No ' Access-Control-Allow-Origin' header ”- 使用 OAuth 2、Passport、Express 和 Node

node.js - npm 更新检查失败

javascript - Node.js 中的 Google Cloud Speech-to-Text api 编码问题

javascript - 快速验证返回错误响应错误代码

Android facebook SDK 执行错误 java.lang.NoClassDefFoundError

node.js - 错误 : ENOENT: no such file or directory, 打开 'F:\login\uploads\2019-05-12T18:23:38.048Z20190319_214122.jpg'