【问题标题】:Building Mobile Routes on a Rails Server api在 Rails Server api 上构建移动路由
【发布时间】:2014-01-19 02:24:09
【问题描述】:

我一直在为移动开发人员构建一个用于 iphone 应用程序的服务器 api。我没有移动开发经验,他们也没有使用 ruby​​ on rails 的经验。我试图为应用程序构建一个移动身份验证路由,允许用户通过 facebook 登录。到目前为止,它看起来像这样:

GET '/auth/mobile/fbtoken=:facebook_token&device_id=:device_id&time_zone=:time_zone&os_type=:os_type',到:'sessions#fb_sso'

  client = OAuth2::Client.new(
  ENV['FACEBOOK_APP_ID'],
  ENV['FACEBOOK_APP_SECRET'],
  site: 'https://graph.facebook.com')
  token = OAuth2::AccessToken.new(client, params[:access_token])
  user_info = ActiveSupport::JSON.decode(token.get('/me').body)  

用于学习如何正确执行此操作的在线资源非常有限或根本不存在。我找到的有关如何执行此操作的唯一信息涉及使用 Devise 进行身份验证。我们的应用目前配备了 Devise(已添加并已迁移到 User 模型),但当前未通过 Devise 进行身份验证。我能够找到的唯一具体示例之一可以在这篇文章的页面底部找到:

https://www.ruby-forum.com/topic/4409930

这让我相信我的路线设置方式是正确的,因为除了最后一步“使用 Devise 方法登录:sign_in @user, :event => :authentication 。”这就是促使我尝试将 Devise 集成到我们的应用程序中的原因。

读完之后,我的意思是在某种受限状态下实现 Devise,并且只使用 sign_in 方法。不幸的是,Devise 似乎非常固执己见,更像是一种“全有或全无”的解决方案。我非常不确定如何继续以及如何决定是完全重建我们应用程序的重要部分以支持 Devise,还是完全放弃它并尝试实施我自己的解决方案。

tl;博士 1) 是否值得重做 Rails 应用程序的很大一部分以使用 Devise? 2)没有设计是否可以使这条路线工作?怎么样?

【问题讨论】:

  • iOS 应用是否只需要支持使用 facebook 通过 Rails 应用进行身份验证?

标签: facebook mobile devise omniauth rails-api


【解决方案1】:

如果您只想让您的用户通过 Facebook 登录,那么 Devise 将是不必要的,因为您只需使用 Facebook 的 API 和 Koala 或 Omniauth 来验证用户身份。另一方面,如果您希望非 Facebook 用户使用您的应用程序,我认为您没有理由不能同时使用 Devise 来获得自己的身份验证和 Facebook 身份验证;您只需要任何一种形式的身份验证即可创建会话。

如果我理解正确,链接底部的解决方案不会使用 Devise 进行 Facebook 身份验证,而是用于在某人的 FB 帐户经过身份验证时创建会话。似乎是一种合理的方式。

回答您的 TL/DR:

1) 仅当您计划同时使用 Facebook 登录和传统登录时。 2) 是的。只需将这些 GET 参数提供给 Omniauth 或 Koala 等 gem,并在用户通过身份验证后创建会话。

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 2018-03-23
    • 2017-08-22
    • 2012-07-30
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多