12

我目前正在构建一个带有 rails 后端的 iPhone 应用程序。我在 iphone 上仅使用 facebook 的 Single Sign On (SSO),并且身份验证在客户端上运行良好。我在rails上使用设计作为后端。

注意我已经在 iOS 应用程序中咨询了 Facebook 身份验证设计,该应用程序也已经访问了安全的 Web 服务

我看到这个设计有一个叫做 token_authenticable 的东西,它本质上是那个线程第 5 步中描述的“票”。这是我看到的电流

  1. 用户在手机上登录 facebook SSO
  2. 用户使用 { access_token: X } 调用 myserver.com/sessions/fb_sso
  3. 在服务器端(在 SessionsController#fb_sso,我将使用 access_token 对 facebook 进行 API 调用
  4. 如果 access_token 有效,则检查用户是否存在于数据库中。如果用户不存在,则创建一个新用户
  5. 现在我们可以将 { user_id: X, devise_auth_token: Y } 返回到 1) 上的调用

这很简单。但是,我有几个问题:

  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/
  2. 哪里是放置 3-4 代码的最佳位置?
  3. 我似乎在谷歌上找不到太多关于这个话题的信息。为什么对于一个如此普遍的过程没有这么少的教程?我错过了一些明显的东西吗?
4

2 回答 2

1

你为什么不能使用omniauth-facebook gem。如果您使用设计,它是获取访问令牌的一个非常简单的解决方案,它的潜力将加倍。确保您需要在不同的登录时间获取不同的访问令牌。

你可以通过这个链接https://github.com/pramodv-nyros/social-login-in-rails

于 2014-01-28T07:06:22.217 回答
0

您必须在服务器和 ios 客户端上使用相同的令牌。一个简单的解决方案是通过设备+omniauth将所有逻辑放在服务器端,iOS只处理UI和来自服务器端的响应。如果您想像使用 facebook iOS SDK 一样从 iOS 获取令牌,您应该将令牌告诉服务器端,但看起来不安全。

于 2012-11-24T04:54:29.837 回答