繁体   English   中英

Rails3 应用程序的起点,它将成为 iphone 应用程序的后端

[英]Starting place for Rails3 App that will be backend of an iphone app

我想开始研究我对 iphone 应用程序的想法,但我在从哪里开始时遇到了一些问题。 我希望该应用程序主要在 iphone 上使用,但在 web 应用程序上具有一些功能,例如登录和查看从 iphone 应用程序创建的内容。 我已经启动了一个 rails3 应用程序,并希望将其用作 api/app 的后端。

我对如何使用身份验证系统进行 go 感到困惑,以便此应用程序既可以用作 web 应用程序,也可以用作 iPhone 应用程序的 api。

我想在 web 和 iphone 应用程序上使用 omniauth 登录,因为我只希望用户使用 twitter 和/或 fb 登录,但我不知道一旦用户登录到 iPhone 应用程序后如何验证请求。 我知道像 devise 这样的其他一些 gem 允许使用 api 密钥可验证列,这使得签名 api 调用更容易,但我认为它的使用方式过于臃肿。

谁能给我关于如何 go 关于制作一个既可以作为 web 应用程序工作,又可以在使用 iphone 通过 api 进行身份验证的身份验证系统的建议。

谢谢!

一些想法...

我假设只是让 iOS 应用程序的行为类似于 web 浏览器,并像往常一样随每个请求发送一个持久 cookie。 通过这种方式,您可以使用标准的身份验证做法,也可以让自己在某天发布基于 Web 的应用程序版本,而无需彻底检查所有内容。

所以工作流程是:

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

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

一些资源可以帮助您一路走来:

  1. 获取/存储/发送 cookies: 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/这是一个 rails 示例

希望能有所帮助!

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

您可以将您的呼叫http_autenticate到您的 Controller,然后将获得该信息......这只需要验证您的用户的用户名和密码发送回您的“rails”应用程序。

但是,您是否只设想 iphone 应用程序查看数据或喜欢图像、ala flickr 或 twitpic? 一个对象画廊,通常是图像,可能会被发回?

就个人而言,不要担心“臃肿”。 我只是假设这样的评论,再加上这样的问题,意味着你可能会担心错误的事情而不知道发生了什么。 如果你是 Richard Stallman 之类的,我提前道歉,但必须说出来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM