从公共信息亭在Facebook上共享 - 用户无法从FB注销!

问题描述:

我有一个网站,旨在在公共事件亭上运行。我希望用户能够在Facebook上从本网站共享一个页面,而不会离开他们的Facebook会话登录。这不是Facebook Connect站点(没有与w/FB同步的登录信息),我拥有的是共享该链接的链接去Facebook的sharer.php:从公共信息亭在Facebook上共享 - 用户无法从FB注销!

<a href="http://www.facebook.com/sharer.php?u="http://mysite.com/mypage" target="_blank">share this</a> 

它允许用户登录并张贴链接罚款,但随后关闭窗口和叶登录的用户没有为退出别无选择,所以未来用户出现并希望共享的用户的FB账户已登录!

当Facebook的用户界面最近发生变化时,看起来像这样改变了;之前它会在发布后重定向到用户的个人资料页面,他们可以从中注销。

我该如何解决这个问题?任何关于“正确的方式”的建议,允许从公共信息亭与FB分享?

编辑: 如果需要登录,我已在bugs.developers.facebook.com(http://bugs.developers.facebook.com/show_bug.cgi?id=9903)上输入增强请求,让sharer.php自动注销用户。请投票赞成FB!

我目前的解决方案是使用隐藏的iframe(下面的代码)在window.onbeforeunload事件中强制从facebook注销。我的网站现在只适用于公共信息亭,所以这是可以接受的。对于在家中用于公共和私人用途的网站来说,这可能太暴力,并会惹恼用户。

window.onbeforeunload = function() { 
    if (do_fb_logout) { 
    iframe = document.createElement("iframe"); 
    iframe.setAttribute('width', '0px'); 
    iframe.setAttribute('height', '0px'); 
    iframe.setAttribute('frameborder', '0'); 
    document.body.appendChild(iframe);  
    doc = iframe.contentDocument; 
    if (doc == undefined || doc == null) 
     doc = iframe.contentWindow.document; 
    doc.open(); 
    doc.write("<html><head></head><body>"); 
    doc.write("<form id=fbForm name=fbForm method=POST action=http://www.facebook.com/logout.php >"); 
    doc.write("<input type=hidden name=confirm value=1 /></form>"); 
    doc.write("<script type='text/javascript'>document.getElementById('fbForm').submit();</"+"script>"); 
    doc.write("</body></html>"); 
    doc.close(); 
    } 
} 

我已经在Windows浏览器FF 3.6,IE 7和Chrome上对此进行了测试。

想到的一个想法是给链接一个target='_blank',同时使用JavaScript将“母亲”页面重定向到Facebook主页面。这样,当窗户关闭时,用户至少会在他们面前有Facebook。

但是,该页面将显示“未登录”状态,因为它是在用户登录之前调用的。除了经常刷新Facebook页面的一些丑陋框架外,无法想到解决方法 - uggh。

想到的另一种方式是使用JavaScript​​打开共享器链接,然后经常轮询是否存在mywindow。如果没有(=窗口关闭),重定向到Facebook主页面,该页面将显示用户的配置文件和注销按钮。不过,也是,因为它很复杂和不稳定。嗯。

毫无疑问,这是Facebook的一个bug,你可能不是唯一一个遇到它的人。

+0

哪里是正确的地方向Facebook报告这样的错误?我没有注册为Facebook开发者,只是在我的网站上使用链接。 – user206481 2010-04-23 18:02:52

+0

@user check out http://developers.facebook.com/它确实有可能在没有实际成为Facebook开发者的情况下注册他们的bug跟踪器,我曾这么做过一次前端错误(这仍然存在并让我每次都陷入困境但是。) – 2010-04-23 18:06:03

+0

我发布了一个bug,但它被拒绝了。我现在发布了一个增强请求 - 请为Bug 9903投票,以获得一些动力 – user206481 2010-04-27 15:57:46