【发布时间】:2018-08-31 21:39:54
【问题描述】:
我将devise_token_auth 与Rails 5 API 和使用redux-token-auth 的单独React/Redux 应用程序一起使用,试图允许用户通过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 前端应用程序并使用刚刚创建的新用户的令牌进行身份验证。
我做错了什么?我最初重定向到处理 oauth 流的后端 API 是错误的吗?我在 devise_token_auth 问题中看到了一些关于在新窗口中执行此操作的 cmets,但除了使用 jQuery 库jToker(我不想这样做)之外,我没有看到任何有关如何执行此操作的文档。
在使用omniauth 时,设置和配置redux-token-auth 和devise_token_auth 的正确方法是什么?
【问题讨论】:
标签: ruby-on-rails reactjs react-redux jwt devise-token-auth