所以我正在开发一个整合Facebook的网站,我遇到了一个奇怪的问题。问题是,需要处理访问令牌,因为它可能随时变为无效。例如,如果用户注销或更改了他/她的密码,他们会在进一步请求时获得OAuthException,对吗?
然而,当我退出时,我的应用程序使用的访问令牌似乎仍然有效,这会引起问题,因为用户需要先从我们的网站注销才能使用其他Facebook帐户登录。
是否有人遇到同样的问题,即使用户退出Facebook,访问令牌仍然有效?我正在努力寻找这个问题的创造性解决方案,所以任何帮助都会受到赞赏。
谢谢。
答案 0 :(得分:0)
是的,这是因为Facebook集成到一个单独的网站假设您不希望用户在退出Facebook网站时退出您的单独网站。
基本上有2个用户'access_tokens'可以使用;代码和signed_request - signed_request是用户退出后由facebook失效的代码,其中代码在一段时间内保持有效。
只有从具有facebook请求的登录返回代码,这意味着access_token将仅在经过一段时间后失效。
当在Facebook本身内部调用应用程序时发送了signed_request,即一个游戏应用程序,此令牌优先于'code'参数,这将覆盖'code'access_token。所以我正在构建的应用程序既有一个微博网站,也有一个facebook浏览器和一个facebook canvass应用程序,两者都指向同一个主机,所以如果用户通过单独的站点登录,则登出facebook,他们在我的单独网站上的会话将保持活动状态,因此如果另一个用户在同一台计算机上登录Facebook,并且他们访问了单独的网站,他们将看到以前的用户信息,因为他们没有将自己从我的网站中注销,但是如果他们要从Facebook内转到画布应用程序,facebook会发送一个'signed_request'参数,它将覆盖单独的网站会话,并记录相应的用户,这也意味着他们的会话将在他们注销facebook时失效。 / p>
我看到只有两种解决方案:
1)您可以在每个页面的末尾使存储的会话无效,这会强制您的网站为每个页面请求重定向到Facebook登录,如果用户已经登录,则会直接重定向,但是一些表现的成本。
2)仅通过Facebook使用网站,即强制用户使用画布应用程序。