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

时间:2010-04-23 17:31:48

标签: facebook

我有一个网站,旨在公共活动的售货亭运行。我希望用户能够在Facebook上从这个站点共享页面,而无需登录他们的Facebook会话。这不是Facebook Connect站点(没有登录与FB同步),我所拥有的只是一个用于共享的链接去了Facebook的sharer.php:

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

它允许用户登录并发布链接,但随后会关闭窗口并让用户登录。没有退出选项,因此下一个出现并希望共享的用户具有之前的权限用户的FB帐户已登录!

当Facebook的UI最近发生变化时,似乎只是改变了这种情况;以前它会在发布后重定向到用户的个人资料页面,他们可以从中注销。

我该如何解决这个问题?关于允许与公共自助服务终端分享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上进行了测试。

1 个答案:

答案 0 :(得分:0)

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

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

另一种想到的方法是使用JavaScript mywindow = window.open("http://www.facebook.com/......")打开共享者链接,然后经常轮询mywindow是否仍然存在。如果没有(=窗口关闭),则重定向到Facebook主页面,该主页面将显示用户的个人资料和注销按钮。还是,uggh因为它复杂而不稳定。嗯。

绝对将此报告为Facebook的错误,您可能不是唯一遇到此问题的人。