我正在建立一个非常小的网页,用于自助服务亭。目标是通过触摸屏让人们“喜欢”位于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?
TL; DR:来自“赞”按钮的Facebook Javascript回调在用户登录时有效,但在用户必须通过Facebook弹出窗口登录时失败。 < / p>
答案 0 :(得分:1)
不幸的是,这对我不起作用。我可能非常愚蠢,或Facebook API被窃听。
不。问题在于你的方法,分别是。这个概念。
FB.logout only 使用活动访问令牌(因为否则,我在网上访问的任何网站可能会让我退出Facebook,这将是巨大的恼人的)。
但由于用户未连接到您的应用,因此您没有访问令牌。
提示正常登录 - 可能,但它表示我的应用需要访问某些信息。
这是唯一方式,您将获得访问令牌,并且因为您可以使用FB.logout的唯一方法。
(如果用户登录到Facebook,但拒绝连接到您的应用,那么您将无法获得访问令牌,因此在这种情况下您也无法将其注销。)