繁体   English   中英

当将devise_token_auth gem与常规dev一起使用时,omniauth redirect_callbacks不起作用

[英]omniauth redirect_callbacks not working when using devise_token_auth gem alongside regular devise

我正在尝试让ng-token-auth,devise_token_auth和omniauth-facebook与常规设计一起在Rails / Angular(实际上是离子的)应用程序中一起工作。

发生的情况是,当用户单击“通过Facebook登录”按钮时,浏览器被重定向到Facebook,一旦该应用获得授权,我就会在服务器日志中看到一个Facebook回调请求:

https://<app>.herokuapp.com/omniauth/facebook/callback?code=<some_code>&state=<state>

该请求从我的服务器获得302响应,以发出以下请求:

https://<app>.herokuapp.com/users/facebook/callback

该请求最终以404结尾,因为/ users / facebook / callback的路由在我的route.rb中不存在:

devise_for :users
namespace :api do
  scope :v1 do
    mount_devise_token_auth_for 'User', at: 'auth'
  end
end

生成以下(相关)路由:

api_v1_auth_validate_token_path GET /api/v1/auth/validate_token(.:format)       devise_token_auth/token_validations#validate_token
api_v1_auth_failure_path        GET /api/v1/auth/failure(.:format)              devise_token_auth/omniauth_callbacks#omniauth_failure
                                GET /api/v1/auth/:provider/callback(.:format)   devise_token_auth/omniauth_callbacks#omniauth_success
                                GET /omniauth/:provider/callback(.:format)      devise_token_auth/omniauth_callbacks#redirect_callbacks
omniauth_failure_path           GET /omniauth/failure(.:format)                 devise_token_auth/omniauth_callbacks#omniauth_failure

我不知道/ users / facebook / callback的请求来自哪里。 据我了解,它实际上应该重定向到/ api / v1 / auth /:provider / callback。

有人知道我想念什么吗? 在正确的方向上获得一些帮助/指针将是很棒的。

谢谢!

好的,我可以正常工作了,它似乎是devise_token_auth(0.1.34)的bug(?)。 作为一种解决方法,为了防止回调重定向到/ users / facebook / callback,我将omniauth_callbacks_controller.rb中redirect_callbacks方法的此注释行替换为下面的内容:

#redirect_route = "/#{Devise.mappings[devise_mapping].as_json["path"]}/#{params[:provider]}/callback"
redirect_route = "/api/v1/auth/#{params[:provider]}/callback"

这很丑陋,但目前可以使用。 我在GitHub上的项目中打开了这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM