【发布时间】:2012-06-19 22:19:43
【问题描述】:
我目前正在构建一个带有 rails 后端的 iPhone 应用程序。我在 iphone 上仅使用 facebook 的 Single Sign On (SSO),并且身份验证在客户端上效果很好。我在rails上使用设计作为后端。
注意我已经咨询过Design for Facebook authentication in an iOS app that also accesses a secured web service
我看到 devise 有一个名为 token_authenticable 的东西,它本质上是该线程第 5 步中描述的“票证”。这是我看到的电流
- 用户在手机上登录 facebook SSO
- 用户使用 { access_token: X } 调用 myserver.com/sessions/fb_sso
- 在服务器端(在 SessionsController#fb_sso,我将使用 access_token 对 facebook 进行 API 调用
- 如果 access_token 有效,检查用户是否存在于数据库中。如果用户不存在,则创建一个新用户
- 现在我们可以将 { user_id: X, devise_auth_token: Y } 返回到 1) 上的调用
这很简单。但是,我有几个问题:
- 有了 devise_auth_token,这是否意味着我不再需要从 devise 调用 sign_in("user", resource)? (在这里找到http://jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/)
- 哪里是放置 3-4 代码的最佳位置?
- 我似乎在 Google 上找不到关于此主题的太多信息。为什么对于一个如此普遍的过程没有这么少的教程?我错过了一些明显的东西吗?
【问题讨论】:
-
您是否使用 Omniauth gem 来连接 facebook?结合设计和omniauth 为您处理3 和4!
-
@MBHNYC:如果我错了,请纠正我,但这仅适用于用户通过网站登录的情况。在 OP 的情况下,用户通过 iphone 应用程序登录。网站看不到流量。
-
是的,但是您仍然将相同的信息传递给 Facebook,并且如果您生成/覆盖所有devise+omniauth 控制器/视图,OP 应该有所有的编程工具来满足请求。
-
你解决了吗?你有示例应用吗?
标签: ruby-on-rails ios devise