2012-06-21 27 views
6

Tôi hiện đang viết một trang web và tôi cần một số trợ giúp về tích hợp facebook. Tôi cần một chức năng (PHP hoặc JS, cả hai sẽ giúp) có thể kiểm tra xem một người dùng cụ thể đã chia sẻ trang web của tôi, và tôi không thể tìm ra cách viết một. Bạn có thể vui lòng chỉ cho tôi đúng hướng không?Làm thế nào để kiểm tra xem người dùng chia sẻ trang web (Facebook)? Có thể không?

Trả lời

7

Trước tiên, bạn phải tải Facebook SDK ngay sau tag của bạn:

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

Sau đó, bạn có thể sử dụng chức năng gọi lại để làm những gì bạn muốn:

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

Sau đó, bạn nên sử dụng nó như này:

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

Bạn quên đề cập rằng bạn cần phải nhanh chóng triển khai SDK để sử dụng các tính năng này ... Điểm quan trọng ... – Lix

+0

Cảm ơn Lix. Im đang cập nhật. –

+1

Bạn phải cẩn thận với điều này, hãy nhớ rằng nó đang chạy ở phía khách hàng, người dùng có thể thực hiện một chức năng hoặc một cái gì đó như anh đã chia sẻ khi anh ta thực sự không. – Deumber

5

Sử dụng JavaScript SDK, FB.ui() and the feed dialog, bạn có thể nhắc người dùng là một URL trên Facebook. Hộp thoại này cung cấp chức năng gọi lại để bạn có thể biết liệu bài đăng đã được thực hiện thành công chưa.
Mã mẫu dỡ bỏ từ liên kết ở trên ...

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

Đây là cách dễ nhất để thực hiện những gì bạn cần. Tuy nhiên, Nó sẽ không cho phép bạn kiểm tra xem ai đó đã chia sẻ URL của trang web của bạn bên ngoài hộp thoại feed của bạn hay chưa.


Một thay thế phức tạp hơn không yêu cầu gọi lại hộp thoại có thể được thực hiện bằng cách sử dụng quyền cho phép read_stream. Khi bạn có quyền đó, bạn có thể quét các bài đăng trước đây của người dùng để xem liệu anh ấy có bao giờ chia sẻ trang web của bạn trên tường của mình không ...

Hãy nhớ rằng điều này sẽ không hoạt động nếu người dùng chia sẻ trang web của bạn trên một số tường của người khác hoặc trên một trang ...

Các vấn đề liên quan