3

我正在构建一个非常小的网页以在信息亭支架中使用。目标是让人们“喜欢”一个带有触摸屏的 Facebook 页面。

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

现在,这可以通过 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 页面的二维码,但这并不能解决我的问题 :) 。

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

4

1 回答 1

1

不幸的是,它对我不起作用。我可能很笨,或者 Facebook API 有问题。

没有。问题在于你的方法,resp。这个概念。

FB.logout适用于活动访问令牌(否则,我在网上访问的任何网站都可能使我退出 Facebook,这将非常烦人)。

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

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

这是您获得访问令牌的唯一方法,也是您可以使用 FB.logout 的唯一方法。

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

于 2012-12-05T16:12:55.717 回答