通过Oauth进行Rails + Angular Token授权

时间:2014-12-30 01:37:16

标签: ruby-on-rails angularjs authentication oauth devise

我使用带有Angular前端的Rails后端(API范围为' / api')。我尝试使用ng-token-auth和devise-token-auth合并基于令牌的授权。

我使用常规注册登录工作,但我似乎无法使用oAuth。我也不了解如何调试这个问题。

我有一个使用密钥/密钥设置的Github应用程序。在我的前端,有一个按钮,它将使用$ auth.authenticate(' github')中内置的ng-token-auth。

页面将重定向到github,请求权限,然后重定向回我的网站(虽然是新标签,而不是原始标签页),然后加载主页。

auth实际上没有做任何事情而且没有设置用户。我已检查了所有路线,回拨网址,并按照https://github.com/lynndylanhurley/devise_token_authhttps://github.com/lynndylanhurley/ng-token-auth上的所有说明操作,但我无法弄清楚出现了什么问题或如何诊断它

如果我记录$ auth.authenticate响应我得到的错误是auth无效("用户取消了登录")但这似乎更像是超时的东西?

有没有办法查看标头中是否实际发送了任何令牌?有什么潜在的问题?我也试过Twitter

(setting the host to either http://127.0.0.1:3000 or http://localhost:3000)

编辑:这是http请求在终端

中的样子
Started GET "/omniauth/github?     auth_origin_url=http%3A%2F%2Flocalhost%3A3000%2Fsign_in&favorite_color=blue&resource_class=User" for      127.0.0.1 at 2014-12-29 18:33:55 -0800
I, [2014-12-29T18:33:55.295507 #46466]  INFO -- omniauth: (github) Request phase initiated.


Started GET "/omniauth/github/callback?code=3c03dbb28c2bb0bc8d36&state=5ce4e8bae5f9671ffe521ceeb54a14eb42c3b2866cd79b8e" for 127.0.0.1 at 2014-12-29 18:33:55 -0800
I, [2014-12-29T18:33:55.692405 #46466]  INFO -- omniauth: (github) Callback phase initiated.
Processing by HomeController#index as HTML
Parameters: {"code"=>"3c03dbb28c2bb0bc8d36", "state"=>"5ce4e8bae5f9671ffe521ceeb54a14eb42c3b2866cd79b8e"}
Rendered home/index.html.erb within layouts/application (0.0ms)
Completed 200 OK in 117ms (Views: 116.6ms | ActiveRecord: 0.0ms)

编辑:

好的,所以我开始工作了。的种类。我的rails路由文件有这一行:

  root to: "home#index", anchor: false

我删除了"锚点:false"并且omniauth的回调现在成功运行。然而,这使得轨道/角度路线不能100%工作/玩得很好。例如,如果我转到localhost:3000,然后单击指向/ sign_in的链接,它将转到正确的页面。如果我尝试直接在浏览器中访问localhost:3000 / sign_in,rails会抱怨缺少路线......

好的解决了!

所以我只是在rails路由文件中重新创建了回调路由并且它工作正常。     get" / omniauth /:provider / callback" => " devise_token_auth / omniauth_callbacks#redirect_callbacks"

当我之前检查过铁路路线时,它有确切的路线但是在定义了根路线之后。我不知道如何修复它而不在rails路径中明确定义它。

0 个答案:

没有答案