我正在使用 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前端应用程序,并使用新创建的用户的令牌进行身份验证。
我做错了什么?我最初重定向到处理oauth流程的后端API是错误的吗?我在devise_token_auth问题中看到了一些评论,建议在新窗口中执行此操作,但我没有看到任何文档说明如何执行,除了使用jQuery库jToker(我不想这样做)。
当使用omniauth
时,设置和配置redux-token-auth
和devise_token_auth
的正确方法是什么?