2012-06-21 39 views

回答

7

首先,你有你的標籤後立即加載了Facebook SDK:

<div id="fb-root"></div> 
    <script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId    : "YOUR APP ID", 
     status    : true, // check login status 
     cookie    : true, // enable cookies to allow the server to access the session 
     xfbml    : false, // parse XFBML 
     perms    : 'read_stream', 
     access_token   : "USER ACCESS TOkEN", 
     frictionlessRequests : true 
    }); 
    }; 

    // 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/pt_BR/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

</script> 

然後你可以使用回調函數來完成你想要什麼:

<script type="text/javascript"> 
    function shareOnFacebook() { 
    FB.ui(
     { 
     method  : 'feed', 
     display  : 'iframe', 
     name   : 'name', 
     link   : 'http://www.linktoshare.com', 
     picture  : 'http://www.linktoshare.com/images/imagethumbnail.png', 
     caption  : 'txt caption', 
     description : 'txt description', 
     access_token : 'user access token' 
     }, 
     function(response) { 
     if (response && response.post_id) { 

      // HERE YOU CAN DO WHAT YOU NEED 
      alert('OK! User has published on Facebook.'); 

     } else { 
      //alert('Post was not published.'); 
     } 
     } 
    ); 
    } 
</script> 

那麼你應該使用它像這樣的:

<a href="#" onclick="shareOnFacebook();">Share on facebook</a> 
+0

您忘了提及您需要實例化SDK以使用這些功能...重要的一點... – Lix

+0

感謝Lix。我正在更新。 –

+1

你一定要小心,記住它在客戶端運行,用戶可以執行一個函數或者像他已經分享的東西,當他真的沒有。 – Deumber

5

使用JavaScript SDK, FB.ui() and the feed dialog,可以提示你的用戶SH是Facebook上的網址。這個對話框提供了一個回調函數,以便您可以分辨帖子是否成功。
從上面的鏈接取消代碼示例...

var obj = { 
    method: 'feed', 
    link: 'https://developers.facebook.com/docs/reference/dialogs/', 
    picture: 'http://fbrell.com/f8.jpg', 
    name: 'Facebook Dialogs', 
    caption: 'Reference Documentation', 
    description: 'Using Dialogs to interact with users.' 
}; 

function callback(response) { 
    document.getElementById('msg').innerHTML = "Post ID: " + response['post_id']; 
} 

FB.ui(obj, callback); 

這是完成你所需要的最簡單的方法。 但是,它不會允許您測試某人是否在您的feed對話框之外分享了您網站的網址。


可以通過使用read_stream權限來完成不需要對話回調的更復雜的替代方案。一旦你的許可,您可以掃描用戶過去的帖子,看他是否有過共享您的網站上他的牆......

請記住,如果用戶共享您的網站上一些,這將不起作用其他人的牆或頁面上...