OAuth流程,iPhone - > Rails - > Facebook的

时间:2012-03-06 15:46:40

标签: ruby-on-rails facebook oauth-2.0 omniauth

我正在使用网络客户端和iPhone客户端构建应用程序。

在Web客户端上,我通过Facebook使用Omniauth对用户进行身份验证,然后用户可以将应用上的操作发布到Facebook。这很好。

我在从iPhone应用程序实现Auth流程时遇到了一些问题。

我已将rails应用程序中的Doorkeeper设置为OAuth提供程序。虽然我不确定如何实现身份验证流程。

我想到了这个: 用户可以在iPhone中登录Facebook并获取令牌。然后我们的想法是将令牌以及Facebook uid发送到rails应用程序,存储它,并使用Omniauth对用户进行身份验证。一旦用户通过身份验证,就会生成一个带有Doorkeeper的令牌并将其发送回iPhone应用程序。

如果这是用户第一次针对rails应用进行身份验证,则会创建一个新用户。

然后,用户可以针对JSON-api执行操作,rails应用程序将负责Facebook集成,因为Facebook令牌存储在用户记录中。

该应用程序还将跨越多个域,因此我需要注册多个Doorkeeper应用程序以提供不同的回调uri。

这看起来像是一个可行的解决方案吗? 它安全吗? 是否有其他流量/方法?

感谢。

1 个答案:

答案 0 :(得分:8)

我采用的解决方案总结如下:

  1. 客户端使用Facebook启动誓言流程(使用登录按钮等)
  2. 客户端获取身份验证令牌并发回服务器
  3. 服务器通过FB API调用w / token
  4. 查找用户
  5. 服务器根据FB id
  6. 查找/创建用户
  7. 如果具有FB ID关联查找的用户成功,则用户已登录
  8. 我在这里有一个图表和更多细节:http://www.eggie5.com/57-ios-rails-oauth-flow