2011-12-25 58 views
1

我正在开发简单的Facebook画布应用程序。我在文档下面这个页面:http://developers.facebook.com/docs/appsonfacebook/tutorial/对话框Feed不能重定向后

在我的应用程序,我想鼓励用户分享,所以我试图根据此(第一个JavaScript例子),使饲料的对话框:http://developers.facebook.com/docs/reference/dialogs/feed/

我能够分享链接,但点击共享或取消后没有任何反应。我已经定义了redirect_uri参数,它与应用程序设置中定义的是相同的域URI。奇怪的是,如果我点击关闭按钮(X),redirect_uri中的页面会加载到iframe对话框中。

任何想法,哪里应该是问题?长搜索导致无结果:/

回答

0

根据文档,redirect_uri仅适用于有人单击取消(或关闭对话框而不共享)的情况。如果他们分享,我不能从他们的文档中告诉他们去哪里。然而,iframed对话框将页面嵌入其中的情况非常奇怪。我的第一个直觉是,在应用程序设置中的东西是不正确的。确保你有指定的Facebook应用程序的http和https版本。

+0

谢谢你的回答。根据文档,我想应该在点击每个按钮之后使用redirect_url。 (“在用户点击对话框上的按钮后重定向到的URL”) 但这不是最大的问题。至于应用程序设置:我没有真正的HTTPS访问服务器,只有自签名证书引发丑陋的错误。这应该是一个问题吗?在没有付费证书的情况下使用网络服务器时是否有一些解决方法? – 2011-12-26 09:41:14

+0

您现在需要有一个真正的https站点。我认为这只能用付费证书来完成。如果没有,互联网上的东西真的是错误的,我永远不会相信再次在https网站上... – DMCS 2011-12-26 15:24:03

+0

是的,我明白,没有证书,但没有办法模拟https :)但我的意思是一些解决方法Facebook不需要您的画布应用页面的https连接。尽管如此,感谢您的回答,现在我怀疑缺失的https是问题所在,并尝试通过某些似乎是解决方案的Facebook云服务合作伙伴进行托管,并且它似乎也适用于小型应用程序。 – 2011-12-26 16:11:36

0

这是在Facebook供稿对话框中可用的相同代码。我改变它采用我的应用程序的要求和灯箱打开如果取消使用'#'作为redirect_uri否则我使用响应函数将document.location移动到谢谢你的页面,我希望它会帮助你解决你的问题。

<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>