Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点express react oauth通过react客户端应用程序在回调中初始化后传递访问令牌_Javascript_Node.js_Express_Reactjs_Oauth - Fatal编程技术网

Javascript 节点express react oauth通过react客户端应用程序在回调中初始化后传递访问令牌

Javascript 节点express react oauth通过react客户端应用程序在回调中初始化后传递访问令牌,javascript,node.js,express,reactjs,oauth,Javascript,Node.js,Express,Reactjs,Oauth,我有一个节点服务器,它使用oauth与第三方进行身份验证(就像堆栈溢出一样)。当第三方点击我的回调,我授权请求并获取访问令牌和其他信息时,我想将此信息传递给我制作的react应用程序,这样react应用程序就可以直接从提供商处使用访问令牌进行REST调用 我不熟悉react和node,但我能够创建一个节点服务器,该服务器可以获取访问和刷新令牌信息。我不熟悉“服务”和react应用程序。我一直在使用 app.use('/client', express.static(__dirname + '/c

我有一个节点服务器,它使用oauth与第三方进行身份验证(就像堆栈溢出一样)。当第三方点击我的回调,我授权请求并获取访问令牌和其他信息时,我想将此信息传递给我制作的react应用程序,这样react应用程序就可以直接从提供商处使用访问令牌进行REST调用

我不熟悉react和node,但我能够创建一个节点服务器,该服务器可以获取访问和刷新令牌信息。我不熟悉“服务”和react应用程序。我一直在使用

app.use('/client', express.static(__dirname + '/client'));
为react应用提供服务,这在有限的范围内非常有效。我目前所处的情况超出了范围,我想了解如何在回调中授权后将oauth信息与我的react应用程序一起发送回去。我正在使用的流授权回调中的请求,然后重定向回/client路由以呈现应用程序,但它无法将任何oauth信息传递给客户端。有没有办法在重定向之前设置标题以获得oauth信息,然后在react应用程序中如何获得oauth信息

我在这里发帖是想得到一些关于我应该阅读的途径和资源的建议,也许还有一些关于我目前处境的建议。我渴望在express上了解更多信息,目前正在寻找用我需要的信息设置标题,然后将react应用程序作为文件或其他东西提供,我还不确定


感谢所有的先进

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

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

  • 示例/auth/google->重定向到谷歌登录页面
  • 成功后,您将被重定向回回调url/auth/google/callback
  • 您还可以获取访问令牌、刷新令牌、基本配置文件信息等
  • 没有使用会话,所以我们使用JWT并在服务器端生成令牌
  • 重定向回带有令牌的应用程序:app.example.com?token=JASJKDk
  • 在客户端,从查询字符串中提取令牌

  • 这只是您可能使用的一种流,您也可以使用会话/cookie解决方案来代替JWT。

    非常感谢!这是有道理的。所以我会让我的节点服务器处理/auth/google&/auth/google/callback路由&使用JWTs对访问令牌进行编码,刷新令牌以存储在url中并传递回我的客户端?因此,流程可能类似于:1.单击按钮登录谷歌。从节点获取google登录url会重定向其获取的url 2.登录到google->请求回调到节点并返回access\u令牌、refresh\u令牌等3.对此信息进行JWT附加到url并返回url上的客户端应用4.解码客户端使用令牌中的JWT实际上您只需要JWT,不需要传回访问令牌,刷新令牌,至少我认为您在客户端不需要这些,只在服务器端?对于这个用例,我计划将访问令牌传递给客户端以进行一些rest调用。像我在JWT上那样将访问令牌放在URL上是否不安全?我想确认这是使用JWTsI不会向客户端公开访问令牌的原因,是的,通过JWT使用调用。