我正在使用devise_token_auth使用Rails 5 API和使用redux-token-auth的单独React / Redux应用,试图允许用户通过Twitter OAuth登录(使用omniauth-twitter)。< / p>
我在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
现在正在发生的事情:
/api/v1/auth/twitter
(在后端Rails应用中处理)/api/v1/auth/twitter/callback
,由Rails后端处理users
表/api/v1/auth/twitter/callback
我需要的是让用户返回到React前端应用程序并使用刚创建的新用户的令牌进行身份验证。
我做错了什么?我最初是否错误地重定向到处理oauth流的后端API?我在devise_token_auth问题中看到了一些关于在新窗口中执行此操作的注释,但除了使用jQuery库jToker之外我没有看到任何关于如何执行此操作的文档(我不想这样做)
使用redux-token-auth
时设置和配置devise_token_auth
和omniauth
的正确方法是什么?
答案 0 :(得分:0)
我只是在处理同一件事。您只需要重定向到身份验证后希望用户访问的URL。
因此将返回链接附加到您的auth链接上,像这样
http://www.acme.com/api/v1/auth/twitter?r=http://www.acme.com/dashboard
然后在回调函数中,您将在request.env对象中找到r参数。
request.env['omniauth.params']['r']
然后您可以检查以确保r包含某些内容,如果要保存,则将其保存或传递给此方法最终重定向到的失败或成功状态。
还请记住将加密的令牌传递给前端。 This可以帮助您确定如何来回传递安全令牌。
更新
我还尝试将参数设置为“ auth_origin_url”,而不是我的自定义参数。
http://www.acme.com/api/v1/auth/twitter?auth_origin_url=http://www.acme.com/
我想这就是您想要的。