2

我一直在寻找很多,但没有找到具体的解决方案。我的 FB 应用程序的用户获得 FB 访问令牌,然后手动注销 FB,令牌仍然有效。为什么?这是一个错误吗?如何确定用户是否已注销 FB?
无论我使用什么后端,我都可以手动从 FB 注销并输入https://graph.facebook.com/me?access_token=OLd_ACCESS_TOKEN之类的网址,我将获得有关用户的所有信息。
这里:场景#4。令牌一定是无效的!
我需要的是确定哪个 FB 用户当前正在我的 FB 画布站点上执行操作。FB api 为自定义画布应用程序提供了一个入口点,可以在其中获取用户数据:应用程序的画布 url(您解析 signed_request 字符串)。从那时起,我应该创建 cookie 或其他任何东西来记住用户的凭据(id、token)并将其用于未来的操作。这不太好,因为用户可以在不同的浏览器选项卡中使用另一个 FB 帐户重新登录,并继续在旧帐户下使用我的应用程序。
好吧,如果我想知道当前用户,那么我需要在每次后端操作之前检查其访问令牌的有效性。我将用户重定向到身份验证页面(如果还没有)并将他的数据存储在 cookie 中。每次下一个操作,我都会从该 cookie 中提取用户信息并使用存储的访问令牌。但是现在,当令牌有效时,即使用户已经从 FB 注销,我也看不到维护它的方法:(
请帮忙!
谢谢。
更新!
刚刚发现我可以为同一个用户获得不同的访问令牌:
1)从我的画布 URL 的 signed_request 参数中提取的令牌运行良好,一旦用户注销 2) 令牌在服务器端身份验证流中交换到 (重定向到https://www.facebook.com/dialog/oauth )?...,在指定的 redirect_uri 捕获 CODE,使用https://graph.facebook.com/oauth/access_token交换令牌上的 CODE ?...) - 好吧,这个令牌仍然存在很长时间。
看起来我需要处理第一个案例。无论如何,这对我来说还不够清楚。
UPDATE2
嗯,是的。文档说要使用 signed_request 令牌,否则,如果设置为未经过身份验证,则运行身份验证流程并通过其他方式获取令牌。如果用户注销应用程序,最后一种方法会生成保持活动状态的令牌。

4

1 回答 1

1

好吧,临时解决方案是仅使用 canvas url 操作的 signed_request 参数中给出的令牌。

于 2012-05-29T01:04:12.077 回答