我有一个节点服务器,可以使用oauth与第三方进行身份验证(就像堆栈溢出一样).当第三方点击我的回调并且我授权请求并获得访问令牌和其他信息时,我想将该信息传递给我制作的React应用,以便React应用可以直接使用访问令牌进行REST调用来自提供商.
我是节点和节点的新手,但能够制作一个可以获取访问权限并刷新令牌信息的节点服务器.我是“服务”和服务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解决方案,此处不使用弹出流:
对于Node.js,我建议使用Passport.js OAuth模块,登录流程为:
>示例/ auth / google->重定向到Google登录页面.
>成功后,您将被重定向回回调URL / auth / google / callback
>您还可以获取access_token,refresh_token,基本个人资料信息等.
>不使用会话,因此我们使用JWT并在服务器端生成令牌.
>使用令牌重定向回应用程序:app.example.com?token=JASJKDk..
>在客户端,从查询字符串中提取令牌.
这只是您可能使用的一种可能的流程,您也可以使用会话/ cookie解决方案来代替JWT.