2013-07-04 79 views
4

我在這裏和周圍的interwebs解釋瞭如何爲我的網站創建一個自定義的Facebook共享對話框。如何創建傳遞參數的自定義Facebook共享對話框?

但我發現從平均情況,礦井有一些區別:

1 - 我想自定義區域在我的網頁打開和關閉,當人們點擊一個按鈕(分享按鈕)

2-我想分享燈箱中的內容,而不是頁面的內容。例如,我們有一個產品列表,每個產品將在Lightbox中打開。我想分享有關此產品現在在一個燈箱中打開的信息

我看到有人在談論Javascript SDK,但它的安裝指南告訴我設置APP_ID,但沒有任何應用程序創建我的網站。我必須創建一個才能使用此SDK嗎?

如果我複製並粘貼到它的工作原理地址欄我也發現了這種模式

http://www.facebook.com/sharer.php?s=100&p[title]=a title&p[summary]=a description &p[url]=http://www.linkhere.com&p[images][0]=http://www.linkhere.com/image.jpg 

。但用戶被重定向到一個新的頁面。那不好。

,我想這與上面的圖案說,但不可能使它工作

<a href="#" 
      onclick=" 
      window.open(
       'https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href), 
       'facebook-share-dialog', 
       'width=626,height=436'); 
      return false;"> 
      Share on Facebook 
     </a> 

它不接受我試圖傳遞的參數。

你們有沒有人知道如何解決這個問題?它會通過改變元標籤的「內容」嗎?你的解決方案是什麼?

@EDIT

只是我使用的解決方案

@EDIT 2

更新了V2.2回答

回答

6

這是我做過什麼來解決我的網站的問題:

首先,我添加了工具的Facebook爲我提供:

<script> 
    window.fbAsyncInit = function() { 
    // init the FB JS SDK 
    FB.init({ 
     appId  : 'YOUR APP ID GOES HERE',      // App ID from the app dashboard  
     status  : true,         // Check Facebook Login status 
     xfbml  : true         // Look for social plugins on the page 
    }); 
    // channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel file for x-domain comms 
    // Additional initialization code such as adding Event Listeners goes here 
    }; 

    // Load the SDK asynchronously 
    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

</script> 

然後,我創建了一個開放的共享者和按鈕的功能shareOnFacebook這將調用這個函數

var globalFacebookShareObject = {} //will be set when I click on a product, on a picture, on a comment or post, or whatever I want to share on Facebook or when I load the page 

function shareOnFacebook(){ 
    FB.ui({ 
     method: 'feed', 
     name: globalFacebookShareObject.name, 
     link: globalFacebookShareObject.link, 
     caption: 'R$ '+globalFacebookShareObject.caption, 
     picture: globalFacebookShareObject.picture, 
     description: globalFacebookShareObject.description 
    }, function(response) { 
     if(response && response.post_id){} 
     else{} 
    }); 
} 

<button onclick='shareOnFacebook()'>Share it!</button> 

@edit在2015年10月1日 爲V2仍在工作。2

參考,以Feed method瞭解如何創建共享對話框(我用的是feed方法,這似乎是更靈活)

並以Quickstart 要了解如何導入的Javascript SDK您

+1

感謝它的幫助.. –

+0

我相信'feed'現在已經在APIv2中被棄用了。只有共享是支持的,它似乎不允許覆蓋OG屬性。 – kamranicus

+1

仍然有效@subkamran –

11

這是一個老問題,但這裏是我的工作是什麼:

window.open(
     'http://www.facebook.com/sharer.php?s=100&p[title]=a title&p[summary]=a description &p[url]=http://www.linkhere.com&p[images][0]=http://www.linkhere.com/image.jpg', 
     'facebook-share-dialog', 
     'width=626,height=436' 
    ); 

基本上我所要做的就是刪除/ sharer /來自facebook的網址。我猜這是文檔中的一個錯字。

+0

現在,這種方法將無法正常工作,它從詳細的開放圖或給定的網址。特別是使用規範它卡住。 –

+0

Open Graph是一個不同的故事。它告訴Facebook分享什麼。 – HerrSerker