在我的 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 中运行的所有各种脚本覆盖。
有没有人对我如何在不诉诸弹出窗口的情况下让事情正常工作有任何建议?我可能可以将其用作后备选项,但用户体验要差得多。
一点背景:
- Primefaces 3.5
- 面孔 2.1.17
- Facebook Javascript SDK
提前致谢!