0

一段时间以来,我一直在为画布应用程序通过 Facebook 身份验证而苦苦挣扎。我的方法如下:

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

如果在这 3 个步骤中的任何一个中找到访问令牌:

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

如果在会话、cookie 或 中找不到访问令牌signed_request,我会显示一个登录页面。

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

我正在使用的设置是:

  • 导轨 v3.0.8
  • 考拉宝石 v1.2.1

我遵循了这些指南:

4

1 回答 1

3

您是否考虑过使用 Omniauth?(https://github.com/intridea/omniauth)它包含了所有这些东西,让您也可以轻松地扩展到其他站点。

于 2012-02-08T08:06:20.577 回答