【问题标题】:Rails Authentication with Access_token from Facebook使用 Facebook 的 Access_token 进行 Rails 身份验证
【发布时间】: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 步中描述的“票证”。这是我看到的电流

  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. 我似乎在 Google 上找不到关于此主题的太多信息。为什么对于一个如此普遍的过程没有这么少的教程?我错过了一些明显的东西吗?

【问题讨论】:

  • 您是否使用 Omniauth gem 来连接 facebook?结合设计和omniauth 为您处理3 和4!
  • @MBHNYC:如果我错了,请纠正我,但这仅适用于用户通过网站登录的情况。在 OP 的情况下,用户通过 iphone 应用程序登录。网站看不到流量。
  • 是的,但是您仍然将相同的信息传递给 Facebook,并且如果您生成/覆盖所有devise+omniauth 控制器/视图,OP 应该有所有的编程工具来满足请求。
  • 你解决了吗?你有示例应用吗?

标签: ruby-on-rails ios devise


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多