2011-09-09 32 views
14

No quiero usar el botón FB like y aparentemente "compartir" ha quedado en desuso. Lo que trato de hacer es hacer que los usuarios hagan clic en "compartir"/"publicar en la pared" desde mi sitio web, y luego coloca una publicación en su suministro de noticias/perfil con información en mi sitio web/url.Botón Compartir/publicar en la pared - Facebook API?

Parece que no encuentro ningún código que haga esto. ¿Alguien tiene un ejemplo?

¿Y tienen que conectarse primero? ¿O puede verificar si están conectados, si no, iniciar sesión y compartir automáticamente?

Gracias!

Respuesta

20

Esto es posible de dos maneras:

  • Puede utilizar el facebook Javascript SDK si tiene una aplicación:
FB.ui({ 
     method: 'feed', 
     link: 'absolute url', 
     name: 'testtitle', 
     caption: 'testcaption', 
     description: 'testdescription', 
     picture: 'absolute picurl', 
     message: '' 
    }); 

Tenga en cuenta que "el mensaje" debe estar vacío, puede también solo quítalo.

  • Sin una aplicación (sin usuario puede bloquear la aplicación y nunca conseguir cualquier cosa desde la aplicación más, pero sólo es posible con popup): abrir una ventana emergente con Javascript para el facebook partícipe:

    http://www.facebook.com/sharer.php?u=<url to share>&t=<title of content> 
    

    Tenga en cuenta que todo debe ser urlencoded. Por supuesto, también puedes usarlo como un enlace. Y no olvide las etiquetas og en este caso.

Editar: Por favor, tenga en cuenta que "el intercambio automático" no está permitido en facebook. debe presentar al usuario lo que desea compartir en su nombre y debe poder aceptarlo y agregar su mensaje personal. solo sería posible con una aplicación y un usuario autorizado de todos modos.

Por cierto, ambos métodos que se explican aquí funcionan sin el inicio de sesión/autorización del usuario.

Edit2: También hay un método de "compartir" con FB.ui ahora, para publicar un enlace o utilizar Open Graph Actions/Objects.

-2

Si tiene un sitio web dinámico como yo, es posible que desee mi código.

Nota 1: ¡No puede hacer eso si no tiene una aplicación! Si no tiene una aplicación , puede simplemente ir a https://developers.facebook.com/apps y crear una.

Nota 2: ¡Lea los comentarios de mi código!

Código:

<? 
$redirect  = "http://www.SITE.com/thanks.html"; //After sharing, you redirect your visitor to thanks.html or just to the home page. Note that the URL given is the URL you set for your app! 
$link   = curPageURL(); //URL to the shared page (I will give you the function curPageURL() later). 
$title  = Title(); //Title of the shared page (Note If you don't have a dynamic website you can simply ignore the PHP part) 
$descriptionTag = Description(); //Description of the shared page 
$pic    = Img(); //Image of the post or the logo of your website 
echo "<script> 
     FB.init({appId: \"YOU_APP_ID_HERE\", status: true, cookie: true}); 
     function postToFeed() { 
      // calling the API ... 
      var obj = { 
      method: 'feed', 
      redirect_uri: '".$redirect."', 
      link: '".$link."', 
      picture: '".$pic."', 
      name: '".$title."', 
      caption: '".$descriptionTag."', 
      description: 'You_May_Want_To_Say_Something_About_Your_Web_Site_Here!' 
      }; 
      function callback(response) { 
      document.getElementById('msg').innerHTML = \"Post ID: \" + response['post_id']; 
      } 
      FB.ui(obj, callback); 
     } 
    </script>"; ?> 
<a href="#" onclick='postToFeed(); return false;'>Share To Facebook</a> 

Nota: No se olvide de configurar su ID de aplicación en el código!

¡Necesita usar la función curPageURL() para compartir la página PHP actual!

Código:

<? 
function curPageURL() { 
$pageURL = 'http'; 
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") {$pageURL .= "s";} 
$pageURL .= "://"; 
if ($_SERVER["SERVER_PORT"] != "80") { 
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
} else { 
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
} 
return $pageURL; 
} 
?> 

No se olvide de declarar la funcióncurPageURL()al comienzo del código que estoy dando a usted!

Cuestiones relacionadas