2011-09-05 42 views
0

我搜索了几个小时,发现许多相关的帖子,但没有能够解决我的问题。没有用户登录时FB对话框出现问题

目标是使用FB JS SDK显示一个简单的“Post to your wall”对话框。在默认情况下,使用代码here就像魅力一样。

但是,因为我打电话给我的对话框显示了游戏引擎中的函数(即没有用户单击事件),所以上述wiki中的对话框被弹出窗口拦截器阻止。因此,我测试了使用display:'iframe',而且它工作。但问题在于没有用户登录。在“弹出”模式下,用户在显示实际的“发布到墙上”对话框之前,将显示一个登录对话框。但在'iframe'模式下,这个对话框永远不会出现,而是有一个永远持续的加载屏幕。

摘要

弹出模式:工作,即使用户没有登录,而是通过弹出窗口阻止程序阻止

的iFrame模式:失败如果没有用户登录,但不被弹出式窗口拦截器阻止

任何帮助将不胜感激!

回答

0

这是因为在哪种显示模式下可以使用哪些对话框有限制。由于存在安全风险,您无法授权iframe中的用户,必须弹出或重定向才能授权。

“iframe:显示当前页面上的lightbox iframe中的对话框由于点击劫持的风险,只允许某些特定的对话框,并且要求您传递有效的access_token。 - 请参阅https://developers.facebook.com/docs/reference/dialogs/#display

修改即可添加:您可能还想阅读政策和指南文档。 Facebook建议您仅显示这些对话框以回应用户采取的直接点击/操作,以防止您的应用看起来像垃圾邮件。自动将内容发布到用户的个人资料是一种失去信任的简单方法。也许你可以重新考虑你的解决方案,以便你的提示显示出来,以响应用户点击某些东西?

+0

tnx你的提示Abby。事实上,用户点击了一些东西,但在3D游戏引擎(Unity3d)中。该点击在包含游戏的页面上触发一个JavaScript函数。这就是为什么弹出式窗口拦截器无法识别点击,并且像在页面加载或其他东西(并阻止它)一样。 –

+0

在这种情况下,也许你想做一个服务器端的图形API请求,而不是显示对话框?您可以在游戏中创建自己的弹出窗口,以便为用户提供空间来添加他们的消息,并告诉他们您将发布内容,然后使用图形从服务器发布:https://developers.facebook.com /文档/参考/ API /#出版。这样你就不必处理额外的javascript,浏览器兼容,弹出拦截器等。 – Abby

+0

我想这是可行的,但是使用现有的FB对话框会更方便,因为人们认识它们并知道如何处理它们。我正在考虑做一个解决方法,在游戏界面顶部隐藏/显示一个html按钮,用户可以按这个按钮发布到他的墙上。在这种情况下,我可以使用“弹出”显示模式,这是工作。 –

相关问题