2016-06-26 16 views
0

Ich bin nicht in der Lage, die E-Mail-Adresse von Facebook zu bekommen, wenn ich den folgenden Aufruf mache ...Es war uns nicht E-Mail-Adresse in sailsjs erhalten passportjs

// https://developers.facebook.com/docs/ 
// https://developers.facebook.com/docs/reference/login/ 
facebook: function(req, res) { 
    passport.authenticate('facebook', { scope : ['email'] }, function(err, user) { 
    req.logIn(user, function(err) { 
    if (err) { 
     return; 
    } 

    res.redirect('/'); 
    return; 
    }); 
})(req, res); 
}, 

Dies ist, wie die Reaktion behandelt wird und im Grunde der PassportJS Docs-Code.

customMiddleware: function(app) { 

    passport.use(new FacebookStrategy({ 
    clientID: "5xxxxxxxxxxxxx6", 
    clientSecret: "exxxxxxxxxxxxxxxxxxxxxxxxxxxd9", 
    callbackURL: "http://localhost:1337/auth/facebook/callback" 
    }, verifyHandler)); 

    app.use(passport.initialize()); 
    app.use(passport.session()); 
} 

Und hier ist der Handler.

var passport = require('passport') 
    , FacebookStrategy = require('passport-facebook').Strategy; 


var verifyHandler = function(token, tokenSecret, profile, done) { 
    process.nextTick(function() { 
    sails.log.info(profile); 
    Serviceseeker.findOne({uid: profile.id}, function(err, serviceseeker)    { 
     if (serviceseeker) { 
      return done(null, serviceseeker); 
     } 
     else { 
      var data = { 
      provider: profile.provider, 
      uid: profile.id, 
      name: profile.displayName 
      }; 

      if (profile.emails && profile.emails[0] && profile.emails[0].value) { 
      data.email = profile.emails[0].value; 
      } 
      if (profile.name && profile.name.givenName) { 
      data.firstName = profile.name.givenName; 
      } 
      if (profile.name && profile.name.familyName) { 
      data.lastName = profile.name.familyName; 
      } 

      Serviceseeker.create(data, function(err, serviceseeker) { 
      return done(err, serviceseeker); 
      }); 
     } 
    }); 
    }); 
}; 

Und das ist die Antwort, die ich erhalte

info: info: { id: '1xxxxxxxxxxxxxx9', 
       username: undefined, 
       displayName: 'Txxxx Slxxxxn', 
      name: 
      { familyName: undefined, 
       givenName: undefined, 
       middleName: undefined }, 
      gender: undefined, 
      profileUrl: undefined, 
      provider: 'facebook', 
      _raw: '{"name":"Txxxx Slxxxxn","id":"1xxxxxxxxxxxxxx9"}', 
      _json: { name: 'Txxxx Slxxxxn', id: '1xxxxxxxxxxxxxx9' } } 
+0

die Mail-ID u mit r ?? bedeutet Gmail oder etwas anderes –

Antwort

0

Haben Sie versucht:

passport.use(new FacebookStrategy({ 
     clientID: 'CLIENT_ID', 
     clientSecret: 'CLIENT_SECRET', 
     callbackURL: "http://www.example.com/auth/facebook/callback" 
     passReqToCallback : true, 
     profileFields: ['id', 'emails', 'name'] //This 
    },