一段时间以来,我一直在为画布应用程序通过 Facebook 身份验证而苦苦挣扎。我的方法如下:
- 检查用户的会话以获取访问令牌。
- 检查用户的 Facebook cookie 以获取访问令牌。
- 检查 a 的参数
signed_request
。
如果在这 3 个步骤中的任何一个中找到访问令牌:
- 我调用了请求
/me
资源的图形 API。- 如果调用成功,则用户已登录。
- 如果调用失败(导致
OAuthException
),我通过将用户重定向到 Facebook OAuth 端点以获取代码来请求新的访问令牌,然后通过交换该代码来获取新的访问令牌。
如果在会话、cookie 或 中找不到访问令牌signed_request
,我会显示一个登录页面。
这是正确的程序吗?我注意到,signed_request
如果用户的访问令牌已过期,参数中通常不存在。Facebook 认可的请求新访问令牌的方法会导致 2 次面向用户的重定向以及 API 交换,这似乎有点繁重。
我正在使用的设置是:
- 导轨 v3.0.8
- 考拉宝石 v1.2.1
我遵循了这些指南: