2012-06-21 31 views

Respuesta

7

En primer lugar tiene que cargar el Facebook SDK justo después de la etiqueta:

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

continuación, puede utilizar la función de devolución de llamada para hacer lo que quiera:

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

entonces debería usarlo como esto:

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

Olvidó mencionar que necesita crear una instancia del SDK para usar estas características ... Punto importante ... – Lix

+0

Gracias Lix. Estoy actualizando –

+1

Debe tener cuidado con esto, recuerde que se está ejecutando en el lado del cliente, un usuario podría ejecutar una función o algo así como él ya comparte cuando realmente no lo hace. – Deumber

5

Utilizando el JavaScript SDK, FB.ui() and the feed dialog,, puede pedir a los usuarios que sh son una URL en Facebook. Este cuadro de diálogo proporciona una función de devolución de llamada para que pueda saber si la publicación se realizó correctamente.
Ejemplo de código levantado desde el enlace anterior ...

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

Ésta es la manera más fácil de lograr lo que necesita. Sin embargo, no le permitirá probar si alguien compartió la URL de su sitio web fuera del cuadro de diálogo feed.


Una alternativa más compleja que no requiere la devolución de llamada de diálogo podría llevarse a cabo mediante la utilización de la autorización read_stream. Una vez que tenga ese permiso, puede escanear las entradas anteriores de los usuarios para ver si tiene compartió su sitio web en su pared ...

Tenga en cuenta que esto no funcionará si el usuario compartió su sitio web en algunos el muro de otra persona o en una página ...

Cuestiones relacionadas