0

我想对我的应用程序进行身份验证GoogleFacebook。我在我的前端使用AngularJS,在我的服务器上使用node.jsNode.js:Facebook返回我undefined而不是配置文件?

这里是我的Facebook验证功能我node.js服务器上:

var User = require('./user.js'), 
    request = require('request'), 
    env = process.env.NODE_ENV = process.env.NODE_ENV || 'development', 
    config = require('./config.js')[env], 
    createSendToken = require('./jwt.js'), 
    qs = require('querystring'); 

module.exports = function (req, res) { 
    var accessTokenUrl = 'https://graph.facebook.com/oauth/access_token'; 
    var graphApiUrl = 'https://graph.facebook.com/me'; 

    var params = { 
     client_id: req.body.clientId, 
     redirect_uri: req.body.redirectUri, 
     client_secret: config.facebookAuth.clientSecret, 
     code: req.body.code 
    }; 

    console.log(req.body.code); 

    request.get({ 
     url: accessTokenUrl, 
     qs: params 
    }, function (err, response, accessToken) { 
     accessToken = qs.parse(accessToken); 

     request.get({ 
      url: graphApiUrl, 
      qs: accessToken, 
      json: true 
     }, function (err, response, profile) { 
      User.findOne({ 
       facebookId: profile.id // <-- fails here 
      }, function (err, existingUser) { 

       if (existingUser) 
        return createSendToken(existingUser, res); 

       var newUser = new User(); 
       newUser.facebookId = profile.id; 
       newUser.displayName = profile.name; 
       newUser.email = profile.email; 
       newUser.save(function (err) { 
        createSendToken(newUser, res); 
       }) 

      }) 
     }); 
    }); 
} 

然后分配给该post

app.post('/auth/facebook', facebookAuth); 

前端工作正常(我使用satellizer)。

我做了几乎相同的事情Google+它工作正常,但与Facebook它不是。

我的Facebook应用程序配置正确(我已将http://localhost:3030/添加到网站网址和移动网站的网址)。

现在,当我跑我的应用程序,并按下Facebook的按钮,我得到以下错误在服务器上:

      facebookId: profile.id 
              ^
    TypeError: Cannot read property 'id' of undefined 

这样就意味着profileundefined

}, function (err, response, profile) { 

没有Facebook的为什么返回我一个未定义的配置文件?

我该如何解决这个问题?

回答

1

检查的err

 json: true 
    }, function (err, response, profile) { 
     User.findOne({ 
      facebookId: profile.id // <-- fails here 

值来回答你的问题

相关问题