2011-12-25 90 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>