使用Facebook的Access_token进行Rails身份验证

dis*_*dng 12 ruby-on-rails devise ios

我目前正在构建一个带有rails后端的iPhone应用程序.我在iphone上使用facebook的单点登录(SSO),并且在客户端上的身份验证效果非常好.我在rails上使用devise作为后端.

注意我已经在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有效,请检查db中是否存在用户.如果用户不存在,请创建新用户
  5. 现在我们可以将{user_id:X,devise_auth_token:Y}返回给1)

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

  1. 使用devise_auth_token,这是否意味着我不再需要从设计中调用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上找到关于此主题的内容.为什么有一个如此常见的过程那么少的教程?我错过了一些明显的东西吗?

atu*_*830 0

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