在Rails服务器api上构建移动路由

时间:2014-01-19 02:24:10

标签: facebook mobile devise omniauth rails-api

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

GET'/ auth / mobile / fbtoken =:facebook_token& device_id =:device_id& time_zone =:time_zone& os_type =:os_type',to:'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(已添加并已迁移到用户模型),但目前尚未通过Devise进行身份验证。我能够找到的唯一具体例子之一可以在本文的页面底部找到:

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

这让我相信我在路线设置的方式上走在了正确的轨道上,因为除了最后一步“使用Devise方法登录之外一切都是一样的:sign_in @user,:event =>:身份验证“。这就是我试图将Devise集成到我们的应用程序中的动机。

阅读之后,我打算做的是在一种有限状态下实现Devise并仅使用sign_in方法。不幸的是,Devise似乎非常自以为是,更多的是“全有或全无”的解决方案。我不确定如何继续以及如何决定是否完全重建我们的应用程序的大部分以支持Devise或完全放弃它并尝试实现我自己的解决方案。

TL;博士 1)是否值得重新使用Rails应用程序的重要部分来使用Devise? 2)是否可以在没有设计的情况下使这条路线工作?怎么样?

1 个答案:

答案 0 :(得分:0)

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

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

回答您的TL / DR:

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