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'
});
}
}
});
};
フェイスレット内からこの呼び出しを行うたびに、Facebook ダイアログ ボックスが赤い背景で表示され、「エラーが発生しました。後でもう一度やり直してください」というメッセージが表示されます。ただし、display: 'popup' を指定すると、ダイアログは適切に表示されます (ただし、醜いポップアップで表示されます)。
テスト HTML ページ内から (つまり、JSF/Primefaces を使用せずに) まったく同じ呼び出しを行うと、表示をポップアップとして設定しなくても、すべてが適切に表示されます。広範なテストと上記の観察により、これは私が FB.init() を呼び出した方法、またはリダイレクト URI/リンクの不一致の問題ではないと確信しています。
おそらく、Facelet で実行されているさまざまなスクリプトすべてによって、変数が上書きされているのでしょう。
ポップアップに頼らずに物事を機能させる方法について何か提案はありますか? おそらくフォールバック オプションとして使用できますが、ユーザー エクスペリエンスは大幅に低下します。
少し背景:
- プライムフェイス3.5
- 顔 2.1.17
- Facebook Javascript SDK
前もって感謝します!