【问题标题】:Angular2 vs Rails Api vs Facebook AuthAngular2 vs Rails Api vs Facebook Auth
【发布时间】:2016-07-04 00:29:37
【问题描述】:

我正在使用带有 devise gem 的 rails api 来登录 Facebook。当我使用rails应用程序下的html链接直接登录时。它完美地工作。 现在,如果我尝试使用 angular2 移动到客户端并在 rails 应用程序中调用相同的路由。问题发生在重定向到 facebook 中。我可以上路,因为我已经设置了“cors rack gem”,但是当在后台“设计 gem”调用 facebook api 时,这个调用的来源为空。经过 3 小时的搜索,我没有找到让它工作的方法。

有人用 rails api 和 devise/omniauth 设置了角度(1 或 2)吗?

rails api 和 angular 应用在​​不同的域下

【问题讨论】:

  • 嘿@naskaa,如果我理解正确,您想在不离开应用程序的情况下执行社交登录(即更改页面),对吗?
  • 我想将 html 代码从 rails 应用程序移动到 angular2 客户端。我能够从 rails 应用程序(rails 应用程序下的 html)登录,但是如果我从 angular 应用程序使用 ajax 调用相同的路由,它会失败。我能够在我的 angularApp 和 Api 之间进行跨域调用。唯一的例外是这个登录路径,因为 Rails 应用程序将其称为外部域 facebook(设计 gem),并且在此调用中,请求标头中的来源为“null”。
  • 但是你想避免被重定向还是什么?我不确定我是否理解在 html 中移动的问题。我认为您可能正在尝试使用角度 http 服务 $http.get 等,但这会在 Facebook 尝试重定向用户时产生问题。 Facebook 需要物理页面重定向,因为他们需要执行安全提示等操作。但是您可以执行一些操作,例如在新窗口中打开 rails 路由并在传递身份验证数据后关闭它(您可以使用加密的websocket)。
  • 是的,我刚刚重新阅读了您的评论。由于我上面解释的原因,您不能使用 ajax 来调用 facebook 重定向。如果可以的话,Facebook 将无法控制安全性和权限提示。
  • 我可以让我的登录页面在rails应用程序中。在创建用户后,我重定向到 angular2 应用程序中的主页。这不是最好的方法,因为我绕过了这个问题,但我可以继续前进。我发布以了解基于令牌的身份验证。 github.com/sahat/satellizer/issues/858我将来可能会改变这种方法,谢谢你的帮助

标签: angularjs ruby-on-rails-4 devise omniauth-facebook


【解决方案1】:

我最终将这个 gem 用于基于令牌的身份验证。 https://github.com/lynndylanhurley/devise_token_auth

我已经从我的 gem 文件中完全删除了设计,我现在只使用“devise_token_auth”。

你需要像 angular1 一样使用前端库 https://github.com/lynndylanhurley/ng-token-auth调用api。

在我的例子中,我只是使用了来自 ng-token-auth 的演示,我从调用中提取参数注册并在我的 angular2 应用程序中的正常 ajax 调用中使用此参数 => 我能够创建一个用户。

devise_token_auth 通常为 ajax 调用处理 facebook(尚未尝试)

【讨论】:

  • 你是如何让 ng token auth 与 angular 2 一起工作的???我遇到了这个问题
  • 抱歉没有看到你的问题。无需再回答您可以使用:github.com/neroniaky/angular2-token
猜你喜欢
  • 1970-01-01
  • 2020-07-25
  • 2014-11-05
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多