Rails3应用程序的起始位置,它将成为iPhone应用程序的后端

时间:2011-08-09 21:22:08

标签: ruby-on-rails ruby-on-rails-3 api devise omniauth

我想开始研究我对iPhone应用程序的想法,但是我有一些关于从哪里开始的问题。我希望该应用程序主要用于iPhone,但在网络应用程序上有一些功能,如登录和查看从iPhone应用程序创建的东西。我已经开始使用rails3应用程序,并希望将其用作api / app的后端。

我对如何使用身份验证系统感到困惑,以便此应用程序可以作为Web应用程序和iphone应用程序的api工作。

我想在网络和iphone应用程序上使用omniauth登录,因为我只希望用户使用twitter和/或fb登录,但我不知道在用户登录iPhone应用程序后如何验证请求。我知道像设计这样的其他一些宝石允许像api key authenticatable这样的东西,这使得签名api调用变得更容易,但我认为使用auth系统太过臃肿了。

任何人都可以给我建议如何制作一个既可以作为webapp使用也可以通过iphone通过api进行身份验证的身份验证系统。

谢谢!

2 个答案:

答案 0 :(得分:6)

一些想法......

我会假设iOS应用程序的行为类似于Web浏览器,并像正常一样发送持久性cookie以及每个请求。通过这种方式,您可以使用标准身份验证实践,并且可以在一天内发布基于Web的应用程序版本,而无需对所有内容进行大修。

所以工作流程将是:

  
      
  • 从用户输入中获取身份验证信息,并安全地保存在钥匙串中,以便在每次打开应用程序时无缝登录。
  •   
  • 使用像Devise这样的东西来进行Rails服务器端身份验证(即不要重新发明轮子)
  •   
  • 将数据发布到服务器以创建新会话
  •   
  • 以cookie的形式从服务器接收会话信息
  •   
  • 将Cookie存储在iOS应用
  • 中   
  • 在每次请求时将cookie信息发回服务器
  •   
  • 如果他们退出,请销毁您存储的Cookie和密钥链数据,以便在每次打开应用时创建Cookie
  •   

NSURLConnection 提供了一种方法来完成大部分工作,甚至可以发送任何存储的Cookie以及请求,只要您不告诉它。这是一篇旧的SO帖子,谈论其中的一些内容:Objective-C Asynchronous Web Request with Cookies

一些资源可以帮助您:

  1. 获取/存储/发送Cookie:http://www.calaresu.eu/2011/06/01/using-cookies-with-cocoa-nshttpcookie/
  2. 关于带有Rails的iPhone的精彩幻灯片:http://www.slideshare.net/maximeguilbot/rails-as-ios-application-backend
  3. 适合在iOS上的钥匙串中存储身份验证信息:https://github.com/ldandersen/scifihifi-iphone
  4. 与Rails应用交谈:http://restkit.org/(和here's a rails example
  5. 希望有所帮助!

答案 1 :(得分:0)

当您查看像slicehost或rackspace这样的iphone应用程序时,通常会将您的用户名/密码输入到iphone设置中......这样就可以在手机上进行身份验证。有可能,根据你在做什么,你会要求你的iphone与数据库交谈,并返回一些你将解析到你的应用程序的json / xml。

您可以http_autenticate调用您的控制器,然后获取该信息......这只需要验证您的用户的用户名和密码已发送回“rails”应用。

但是,你是否仅限应用程序查看数据或类似图像,ala flickr或twitpic?可能会被送回的对象库,通常是图像吗?

就个人而言,不要担心'臃肿'。我只是假设这样的评论,加上这样的问题意味着你可能会在不知道发生了什么的情况下担心错误的事情。如果你是理查德·斯托曼(Richard Stallman)之类的东西,我会提前道歉,但不得不说道。