我正在开发简单的facebook canvas应用程序。我在文档中关注此页面:http://developers.facebook.com/docs/appsonfacebook/tutorial/
在我的应用中,我想鼓励用户分享它,所以我尝试根据这个(第一个javascript示例)制作一个Feed对话框:http://developers.facebook.com/docs/reference/dialogs/feed/
我能够共享链接,但点击共享或取消后没有任何反应。我已经定义了redirect_uri参数,它与应用程序设置中定义的域URI相同。奇怪的是,如果我点击关闭按钮(X),redirect_uri中的页面将加载到iframe对话框灯箱内。
任何想法,应该在哪里出问题?长时间的谷歌搜索没有结果:/
答案 0 :(得分:0)
根据文档,redirect_uri仅适用于有人点击取消(或关闭对话而不共享)。我不能从他们的文档中告诉他们如果共享的话。但是,iframed对话框将页面嵌入其中的情况非常奇怪。我的第一直觉是应用程序设置中的某些内容不正确。确保您同时指定了facebook app的http和https版本。
答案 1 :(得分:0)
这与facebook Feed对话中提供的代码相同。我将其更改为采用我的应用程序要求并打开灯箱,如果取消使用'#'作为redirect_uri,我使用响应函数将document.location移动到thankyou页面,我希望它可以帮助您解决问题。
<script src='http://connect.facebook.net/en_US/all.js'></script>
<script>
FB.init({appId: "<?=$config['appId'];?>", status: true, cookie: true});
function postToFeed() {
// calling the API ...
var obj = {
method: 'feed',
redirect_uri: '#',
link: 'https://www.facebook.com/MyPageName/app_<?=$config['appId'];?>',
picture: 'https://www.abc.com/fbapp/img/welcome.jpg',
to: friendId,// js variable I am fetching from radio button selection
name: 'App Blah Blah',
caption: 'your_caption',
description: 'your_description'
};
function callback(response) {
// I commented out message print in div
// document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
// check weither feedback is valid
if(typeof(response)!='undefined'){
document.location = 'thankyou.php';
}
}
FB.ui(obj, callback);
}
</script>