如何在用户喜欢带有Facebook Like插件的页面后注销用户?

时间:2012-12-05 15:50:42

标签: javascript facebook facebook-javascript-sdk

我正在建立一个非常小的网页,用于自助服务亭。目标是通过触摸屏让人们“喜欢”位于Facebook的页面。

用户必须首先登录才能看到一个页面,因此Facebook会提出他们的常规登录弹出窗口,其效果就像一个魅力。当用户登录时,页面被喜欢(因为他们点击了“喜欢”按钮)并且用户应该再次登出(因为没有人想要在公共计算机上登录)。该页面应在此之后重新加载。

现在可以使用Facebook的Javascript API。他们有一个事件监听器,当用户喜欢一个页面时,它会调用一个函数。当该事件触发时,我只需要调用FB.logout()。

不幸的是,这对我不起作用。我可能非常愚蠢,或Facebook API被窃听。

我的代码:

window.fbAsyncInit = function() {
    FB.Event.subscribe('edge.create', function(response) {
        FB.logout(function(response) {
            window.location.reload();
        });
    });
}

但这不起作用,我认为问题出在Facebook的登录部分。

有没有人有这方面的经验?它应该很简单,但我不能让它工作......

我尝试过的一些事情:

  • 提示正常登录 - 可能,但它说我的应用程序需要访问某些信息。真的,我唯一想做的就是让用户喜欢一个页面。

  • setTimeout循环 - 试过这个,但Facebook登录似乎在我的页面上整个停止了Javascript?

编辑:我知道人们将他们的凭证插入公共计算机是一个坏主意,但客户希望这样。还有一个链接到Facebook页面的QR码,但这并没有解决我的问题:)。

TL; DR:来自“赞”按钮的Facebook Javascript回调在用户登录时有效,但在用户必须通过Facebook弹出窗口登录时失败。 < / p>

1 个答案:

答案 0 :(得分:1)

  

不幸的是,这对我不起作用。我可能非常愚蠢,或Facebook API被窃听。

不。问题在于你的方法,分别是。这个概念。

FB.logout only 使用活动访问令牌(因为否则,我在网上访问的任何网站可能会让我退出Facebook,这将是巨大的恼人的)。

但由于用户未连接到您的应用,因此您没有访问令牌。

  

提示正常登录 - 可能,但它表示我的应用需要访问某些信息。

这是唯一方式,您将获得访问令牌,并且因为您可以使用FB.logout的唯一方法。

(如果用户登录到Facebook,但拒绝连接到您的应用,那么您将无法获得访问令牌,因此在这种情况下您也无法将其注销。)