【问题标题】:Passport.js stateless/sessionless google authPassport.js 无状态/无会话谷歌身份验证
【发布时间】:2017-08-03 08:16:51
【问题描述】:

我想用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

我如何创建一个不需要的谷歌登录 api 端点 会话并返回一个令牌?

如何通过 ajax 运行它?有什么方法可以调用这个 api 端点并在成功回调中接收响应?

【问题讨论】:

    标签: node.js api express passport.js passport-google-oauth2


    【解决方案1】:

    Google 身份验证过程需要在客户端中进行(因此浏览器将始终打开该新页面),然后 Google 服务器需要直接联系您的服务器(在您的回调端点),否则客户端可能会假装他们是已通过身份验证。

    因此,如果您尝试在对服务器的单个请求或没有服务器的情况下执行此操作,那是不可能的。

    【讨论】:

      猜你喜欢
      • 2014-01-02
      • 2014-07-09
      • 1970-01-01
      • 2011-11-12
      • 2014-12-16
      • 2010-09-26
      • 1970-01-01
      • 2020-01-02
      • 2014-02-16
      相关资源
      最近更新 更多