我想用passport.js写一个无状态节点api进行身份验证。
我想创建一个oauth google api端点,该端点返回成功时的api密钥以及有关成功的其他详细信息。
Google API路线
router.get('/',passport.authenticate('google', { scope : ['profile', 'email']}));
router.get('/callback', function(req, res, next) {
passport.authenticate('google', { session: false, failureRedirect: '/#/login'}, function(err, user, info) {
console.log('------------------in google callback-----------------');
if (err) res.status(500).json({status_code: 500, message: "Authentication error", data : err});
if (!user) {
res.status(404).json({status_code: 404, message : "User not found/created"});
}
var token = 'JWT KEY TO USE AS API TOKEN';
res.status(200).json({status_code: 200, message : "Success", data : {token : token, user:user }});
})(req, res, next);
});
当我在浏览器中成功验证时打开我的api端点时,json响应只是打印在屏幕上,我无法在变量中捕获相同的内容。通过ajax调用相同的api端点不起作用。
This is how i recieve the json response
如何创建无需使用的google登录api端点 会话并返回一个令牌?
我如何通过ajax运行它?有没有办法调用这个api终点并在成功回调中收到响应?
答案 0 :(得分:0)
Google身份验证过程需要在客户端进行(因此浏览器将始终打开该新页面)然后Google服务器需要直接联系您的服务器(在您的回调端点),否则客户端可能只是假装他们是认证
因此,如果您尝试在服务器或服务器的单个请求中执行此操作,则无法做到这一点。