2016-04-27 9 views
2

OAuthのた​​めにパスポート - フェイスブックを使用しており、Facebookからユーザー情報を取得しています。しかし、私が得るのは基本情報(ファーストネーム、ファミリー名)です。私はuserEmailとfriendListのような情報が必要です。パスポート - フェイスブックを使用したFacebookからの特定のユーザー情報

私の現在のFacebookStrategyがある -

passport.use(new FacebookStrategy({ 
     clientID: configAuth.facebookAuth.appID, 
     clientSecret: configAuth.facebookAuth.appSecret, 
     callbackURL: configAuth.facebookAuth.callbackUrl 
    }, 
    function(accessToken, refreshToken, profile, done) { 
     process.nextTick(function() { 
     User.findOne({'facebook.id': profile.id}, function(err, user) { 
      if(err) 
      return done(err); 
      if(user) 
      return done(null, user); 
      else { 
      var newUser = new User; 
      console.log(profile); 
      newUser.facebook.id = profile.id; 
      newUser.facebook.token = accessToken; 
      newUser.facebook.name = profile. displayName; 
      newUser.save(function(err) { 
       if(err) 
       throw err; 
       return done(null, newUser); 
      }) 
      } 
     }) 
     }) 
    } 
)); 

誰かが、私は、ユーザーの電子メールや友人のリストを得ることができる方法を教えてもらえます。 ありがとうございます!

答えて

1

電子メールとuser_friendsが必要な場合は、facebook-authを要求している間にスコープに追加する必要があります。私はyowillに次のコードを追加すると思います:

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

お返事ありがとうございます。私は私のために半分働いた。私が認証の要求を見たとき、私のアプリが電子メールと友人リストの許可を要求していると言っていました。しかし、私は電子メールではなく、友人のリストを手に入れました。どうしたらメールを受け取ることができるのですか? –

+1

friend_listとして、電子メールも配列になります。私はあなたがこれをしなければならないと思う - var email = profile.emails [0] .value; '電子メールを取得する。また、 'var email = profile.emails;'が必要な場合は、アカウントに追加されたすべての電子メールを配列として取得することもできます。 – recharDS

+0

ありがとう!!出来た.... –

関連する問題