我仍在学习 Nodejs 和 expresjs。通过使用 react-facebook-login,可以从包含电子邮件、用户 ID 等的 facebook api 成功生成响应。在我的客户端,我有一个动作将请求发布到包含 facebook 登录状态的服务器,并且我有一个 nodejs 服务器来处理 facebook 登录和验证。但是在我的服务器端,我的 req.body 没有捕获任何空对象 {}。它一直说这是一个错误的 400 请求。在 Postman 中,我可以通过 API 成功捕获它。我该如何解决?有可能被facebook屏蔽吗?
在我的客户端 -> action.js,
export const FacebookLoginAction = (facebookLoginState, FbAccessToken, history) => {
return async (dispatch) => {
try {
const Origin = window.location.origin;
const res = await axios.post(`${Origin}/facebook-login`, facebookLoginState, {
headers: {
'Content-Type': 'application/json',
'accept': 'application/json'
},
FbAccessToken
});
const { data } = res;
dispatch({
type: UserActionTypes.FACEBOOK_LOGIN_SUCCESS,
payload: data
});
toast.success(data.status);
history.push("/");
} catch (error) {
if (error.response) {
dispatch({
type: UserActionTypes.FACEBOOK_LOGIN_FAIL,
payload: error.response.data.message,
});
toast.error(error.response.data.message);
}
}
};
};
在我的服务器端 -> app.js,
const path = require('path');
const express = require('express');
const rateLimit = require('express-rate-limit');
const helmet = require('helmet');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
app.enable('trust proxy');
app.set('view engine', 'ejs');
app.use(cors());
app.options('*', cors());
app.use(express.static(path.join(__dirname, 'public')));
app.use(helmet());
// Limit requests from same API
const limiter = rateLimit({
max: 100,
windowMs: 60 * 60 * 1000,
message: 'Too many requests from this IP, please try again in an hour!'
});
app.use('/api', limiter);
app.use(express.json({ limit: '10kb' }));
app.use(express.urlencoded({ extended: true, limit: '10kb' }));
app.use(cookieParser());
app.use('/api/v1/users', userRouter);
module.exports = app;
在我的 userRoute.js 中,
const express = require('express');
const authController = require('./../controllers/authController');
const router = express.Router();
router.post('/facebook-login', authController.facebooklogin);
// rest router ...
module.exports = router;
在我的 authController 中,
exports.facebooklogin = catchAsync(async (req, res, next) => {
console.log(req.body); --> empty object
// rest code
});