如何在Rails中执行Facebook身份验证?

时间:2012-02-08 08:00:00

标签: ruby-on-rails ruby-on-rails-3 facebook authentication koala

我一直在努力通过Facebook身份验证为画布应用程序。我的方法如下:

  1. 检查用户的会话以获取访问令牌。
  2. 检查用户的Facebook Cookie以获取访问令牌。
  3. 检查signed_request
  4. 的参数

    如果在以下3个步骤中找到访问令牌:

    • 我调用了请求/me资源的图API。
      • 如果通话成功,则表示用户已登录。
      • 如果呼叫失败(导致OAuthException),我会通过将用户重定向到Facebook OAuth端点以获取代码来请求新的访问令牌,然后通过交换该代码来获取新的访问令牌。

    如果在会话,Cookie或signed_request中找不到访问令牌,我会显示目标网页。

    这是正确的程序吗?我注意到,如果用户的访问令牌已过期,参数中通常不会出现signed_request。 Facebook认可请求新访问令牌的方法导致2个面向用户的重定向以及API交换,这看起来有点沉重。

    我正在进行的设置是:

    • Rails v3.0.8
    • Koala gem v1.2.1

    我遵循了这些指南:

1 个答案:

答案 0 :(得分:3)

你考虑过使用Omniauth吗? (https://github.com/intridea/omniauth)它包含了所有这些内容,并且可以让您轻松扩展到其他网站。