2016-04-27 16 views
2

Ich benutze Pass-Facebook für OAuth und erhalten Benutzerinformationen von Facebook. Aber alles, was ich bekomme, sind einige grundlegende Informationen (d. H. Vorname, Familienname). Ich möchte Informationen wie userEmail und friendList.Spezifische Benutzerinformationen von Facebook mit Pass-facebook

Mein aktueller FacebookStrategy ist -

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); 
      }) 
      } 
     }) 
     }) 
    } 
)); 

Kann mir jemand sagen, wie kann ich Benutzer-E-Mail oder Freund-Liste erhalten. Vielen Dank im Voraus !!

Antwort

1

Wenn Sie E-Mail und user_friends benötigen, müssen Sie sie zum Scope hinzufügen, während Sie nach facebook-auth fragen. Ich schätze, folgenden Code zu yowill hinzufügen hilft Ihnen:

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

danke für Ihre Antwort. Ich habe halb für mich gearbeitet. Als ich die Anfrage für Auth sah, gab es etwas, das sagte, dass meine App um E-Mail und Freundesliste-Erlaubnis bittet. Aber ich habe die Freundesliste, nicht die E-Mail. Kannst du mir bitte sagen, wie ich die E-Mail bekommen kann? –

+1

Als Friend_list, E-Mail kommt auch ein Array. Ich denke, du musst das tun - 'var email = profile.emails [0] .value;', um die E-Mail zu erhalten. Sie können auch alle dem Konto hinzugefügten E-Mails als Array abrufen, wenn Sie 'var email = profile.emails;'. – recharDS

+0

Danke !! Es funktionierte.... –