我在Facebook应用程序中使用FB.ui()显示对话框时遇到了一个非常令人沮丧的问题。
基本上我有以下用于调用对话框窗口的函数:
function postToNewsFeed(postName, postCaption, postDescription) {
FB.ui({
method : 'feed',
name : postName,
//display: 'popup',
link : APP_LINK,
caption : postCaption,
description : postDescription,
}, function(response) {
if (messageGrowlWidget) {
if (response && response.post_id) {
messageGrowlWidget.renderMessage({
summary : 'Post successful',
detail : 'Your message has been posted to your wall.',
severity : 'info'
});
} else {
messageGrowlWidget.renderMessage({
summary : 'Post failed',
detail : 'Unable to post to your wall.',
severity : 'error'
});
}
}
});
};
每当我从facelet中进行此调用时,Facebook对话框将显示红色背景,并显示消息“发生错误。请稍后再试”。但是,如果我指定display:'popup',则对话框会正确显示(但是在一个丑陋的弹出窗口中)。
如果我在测试HTML页面中进行完全相同的调用(即,不使用JSF / Primefaces),则所有内容都正确显示,而将显示设置为弹出窗口。由于广泛的测试和上述观察,我确信这不是我调用FB.init()或任何重定向URI /链接不匹配的问题。
我的猜测是Javascript环境中存在某种冲突或其他冲突 - 也许变量被Facelet中运行的所有各种脚本覆盖。
有没有人对如何在不诉诸弹出窗口的情况下让事情发挥作用有任何建议?我可以使用它作为后备选项,但用户体验明显更差。
一点背景:
提前致谢!