0

我正面临社交注册的问题,因为它在创建本地注册后没有记录。重定向时,无法访问 api/users/me..未经授权(401),与我在本地注册中获得的不同,它使用用户信息进行重定向。

facebook/index.js我有默认获取

  .get('/', passport.authenticate('facebook', {
    scope: ['email', 'user_about_me'],
    failureRedirect: '/signup',
    session: false
  }))

  .get('/callback', passport.authenticate('facebook', {
    failureRedirect: '/signup',
    session: false
  }), auth.setTokenCookie);

auth.service.js我有默认功能

function isAuthenticated() {
  return compose()
    // Validate jwt
    .use(function(req, res, next) {
      // allow access_token to be passed through query parameter as well
      if (req.query && req.query.hasOwnProperty('access_token')) {
        req.headers.authorization = 'Bearer ' + req.query.access_token;
      }
      validateJwt(req, res, next);
    })
    // Attach user to request
    .use(function(req, res, next) {
      User.findByIdAsync(req.user._id)
        .then(function(user) {
          //user here is undefined, it shouldn't be. i want to find out why.
          if (!user) {
            return res.status(401).end();
          }
          req.user = user;
          next();
        })
        .catch(function(err) {
          return next(err);
        });
    });
}

function signToken(id, role) {
  return jwt.sign({ _id: id, role: role }, config.secrets.session, {
    expiresInMinutes: 60 * 5
  });
}

/**
 * Set token cookie directly for oAuth strategies
 */
function setTokenCookie(req, res) {
  if (!req.user) {
    return res.status(404).send('Something went wrong, please try again.');
  }
  var token = signToken(req.user._id, req.user.role);
  res.cookie('token', token);
  res.redirect('/');
}

谁能帮我解决这个问题……我错过了什么吗?

提前致谢。

4

1 回答 1

0

我有类似的问题。我使用可自定义的后端 URL 修改了 Angular 全栈代码。

https://github.com/kannach/AFSPphonegap/blob/master/client/components/services/config.service.js

我在 localhost 中测试 facebook 登录,而我的后端 url 指向我的生产服务器。一旦我将支持的 url 更改为 localhost,那么一切都按预期工作

于 2016-02-06T23:00:55.580 回答