使用react客户端应用程序

时间:2016-08-20 17:06:08

标签: javascript node.js express reactjs oauth

我有一个节点服务器使用oauth与第三方进行身份验证(如堆栈溢出)。当第三方点击我的回调并且我授权请求并获取访问令牌和其他信息时,我想将此信息传递给我做出的反应应用程序,那么反应应用程序可以使REST调用直接使用访问令牌来自提供者。

我是新的反应和节点,但我能够创建一个可以获取访问权限并刷新令牌信息的节点服务器。我是新来的'服务'并提供反应应用程序。我一直在使用

app.use('/client', express.static(__dirname + '/client'));

服务反应应用程序,这在有限的范围内工作得很好。我目前所处的情况超出了程度,我想学习如何在回调授权后发回oauth信息以及我的反应应用程序。我正在使用的流程在回调中授权请求,然后重定向到/ client路由以呈现应用程序,该应用程序无法将任何oauth信息传递给客户端。有没有办法在重定向之前设置标题以获得oauth信息,然后一些如何在react应用程序中获取oauth信息?

我在这里发帖是为了获得一些我应该阅读的途径和资源的建议,也许对我目前的情况提出一些建议。我渴望了解更多有关快递的信息,目前我正在寻找使用我需要的信息设置标题,然后将反应应用程序作为文件或其他内容提供,我还不确定。

感谢所有先进的人!

1 个答案:

答案 0 :(得分:3)

我会尽力回答你的问题。因此,SPA(单页面应用程序)和OAuth登录的问题在于,使用重定向传输数据的唯一方法是URL查询字符串。 JWT(JSON Web Token)允许这样做,但它仅在移动原生SDK-s中受支持。 Web解决方案,不使用popover流程:

对于Node.js,我建议使用Passport.js OAuth模块,登录流程:

  1. 示例/ auth / google - >重定向到Google登录页面。
  2. 成功后,您将被重定向回回调网址/ auth / google / callback
  3. 您还可以获取access_token,refresh_token,基本个人资料信息等。
  4. 没有使用任何会话,因此我们使用JWT并在服务器端生成令牌。
  5. 使用令牌重定向回应用程序:app.example.com?token=JASJKDk ..
  6. 在客户端,从查询字符串中提取令牌。
  7. 这只是您可能使用的一种流程,而不是JWT,您也可以使用会话/ cookie解决方案。