我有一个 Node 服务器,它使用 oauth 向第三方进行身份验证(就像堆栈溢出一样)。当第三方点击我的回调并且我授权请求并获取访问 token 和其他信息时,我想将此信息传递给我制作的 react 应用程序,然后 react 应用程序可以直接使用访问 token 进行 REST 调用来自 vendor 。
我是 React 和 Node 的新手,但我能够制作一个可以获取访问权限和刷新 token 信息的 Node 服务器。我是“服务”和服务 react 应用程序的新手。我一直在使用
app.use('/client', express.static(__dirname + '/client'));
为 React 应用提供服务,这在一定程度上非常有效。我目前所处的情况超出了范围,我想了解如何在回调中授权后将 oauth 信息与我的 React 应用程序一起发回。我正在使用的流程在回调中授权请求,然后重定向回/client 路由以呈现应用程序,该应用程序无法将任何 oauth 信息传递给客户端。有什么方法可以在重定向之前设置 header 以获取 oauth 信息,然后如何在 React 应用程序中获取该 oauth 信息?
我在这里发帖是为了获得一些关于我应该阅读的途径和资源的建议,也许还有一些针对我目前情况的建议。我很想了解更多关于 express 的信息,目前正在寻找用我需要的信息设置标题,然后将 React 应用程序作为文件或其他东西提供服务,我还不确定。
感谢所有先进的!
最佳答案
我会尽力回答你的问题。因此 SPA(单页应用程序)和 OAuth 登录的问题在于,使用重定向传输数据的唯一方法是 URL 查询字符串。 JWT(JSON Web Token)允许这样做,但它只在移动原生 SDK-s 中受支持。网络解决方案,不使用此处的弹出框流:
对于 Node.js,我建议使用 Passport.js OAuth 模块,登录流程:
- 示例/auth/google -> 重定向到 Google 登录页面。
- 成功后,您将被重定向回回调 url/auth/google/callback
- 您还可以获得 access_token、refresh_token、基本资料信息等。
- 没有使用 session ,所以我们使用 JWT 并在服务器端生成 token 。
- 使用 token 重定向回应用程序:app.example.com?token=JASJKDk..
- 在客户端从查询字符串中提取 token 。
这只是您可能使用的一种可能的流程,除了 JWT,您还可以使用 session /cookie 解决方案。
关于javascript - node express react oauth 在回调中与 react 客户端应用程序授权后传递访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39056716/