我有一个网站,旨在公共活动的售货亭运行。我希望用户能够在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上进行了测试。
答案 0 :(得分:0)
我想到的一个想法是给链接target='_blank'
,同时使用JavaScript将“母”页重定向到Facebook主页。这样,当窗口关闭时,用户至少会在他们面前放置Facebook。
然而,该页面将显示“未登录”状态,因为它是在用户登录之前调用的。除了经常刷新facebook页面的丑陋框架集外,无法想到解决方法 - uggh。
另一种想到的方法是使用JavaScript mywindow = window.open("http://www.facebook.com/......")
打开共享者链接,然后经常轮询mywindow
是否仍然存在。如果没有(=窗口关闭),则重定向到Facebook主页面,该主页面将显示用户的个人资料和注销按钮。还是,uggh因为它复杂而不稳定。嗯。
绝对将此报告为Facebook的错误,您可能不是唯一遇到此问题的人。