gpt4 book ai didi

ruby-on-rails - 如何使用 redux-token-auth 设置 devise_token_auth 和 omniauth?

转载 作者:行者123 更新时间:2023-12-04 14:00:16 26 4
gpt4 key购买 nike

我正在使用 devise_token_auth使用 Rails 5 API 和单独的 React/Redux 应用程序 redux-token-auth ,试图允许用户通过 Twitter OAuth 登录(使用 omniauth-twitter)。

我有 devise_token_auth安装在 /api/v1如下:

1 │ Rails.application.routes.draw do
2 │ namespace :api do
3 │ scope :v1 do
4 │ mount_devise_token_auth_for 'User', at: 'auth', controllers: { omniauth_callbacks: 'omniauth_callbacks' }
5 │ end
6 │ end
7 │ end

这是现在发生的事情:

  • 在 React 前端,用户单击链接以使用 Twitter 登录
  • 用户被重定向到 /api/v1/auth/twitter (在后端 Rails 应用程序中处理)在同一窗口中
  • 用户被重定向到 twitter.com 以登录和授权应用程序
  • 用户被重定向到回调 URL,即 /api/v1/auth/twitter/callback ,由 Rails 后端处理
  • Oauth 成功,用户信息被添加到 users
  • 然后什么也没有发生。显示一个空白页面,其中的 URL 仍然显示带有路径的后端 Rails 应用程序 URL/api/v1/auth/twitter/callback

  • 我需要的是让用户返回 React 前端应用程序并使用刚刚创建的新用户的 token 进行身份验证。

    我究竟做错了什么?最初重定向到处理 oauth 流的后端 API 是否错误?我在 devise_token_auth 问题中看到了一些关于在新窗口中执行此操作的评论,但除了使用 jQuery 库之外,我没有看到任何有关如何执行此操作的文档 jToker (我不想这样做)。

    设置和配置的正确方法是什么 redux-token-authdevise_token_auth使用时 omniauth ?

    最佳答案

    我只是在处理同样的事情。您只需要重定向到您希望用户在身份验证后所在的 url。

    因此,将返回链接附加到您的身份验证链接,就像这样说

    http://www.acme.com/api/v1/auth/twitter?r=http://www.acme.com/dashboard

    然后在您的回调函数中,您将在 request.env 对象中找到 r 参数。
    request.env['omniauth.params']['r']

    然后,您可以检查以确保 r 有某些东西,如果有,您想保存它或将其传递到此方法最终重定向到的失败或成功状态。

    还要记住将您的加密 token 传递给前端。 This可能会帮助您弄清楚如何来回传递安全 token 。

    更新

    我也只是尝试将参数设置为“auth_origin_url”而不是我的自定义参数。
    http://www.acme.com/api/v1/auth/twitter?auth_origin_url=http://www.acme.com/

    我想这就是你要找的。

    关于ruby-on-rails - 如何使用 redux-token-auth 设置 devise_token_auth 和 omniauth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428860/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com