Graph API
API's 23 noviembre, 2017 0

Facebook API y PHP como publicar fotos

Cada día es más indispensable las redes sociales en nuestra vida cotidiana, y si eres programador seguramente
te encontraras con la solicitud de implemantarlas dentro de un proyecto web, más especicifo de poder compartir fotos
a tu muro con Facebook API . (compartir fotos en twitter)

Si es tu primera vez, con este tipo de asignación; y es mas si alguna vez ya tuviste la oportunidad de implentar una solución
pero ya no te acuerdas como, aquí les dejo un sencillo tutorial de como usar Facebook API con PHP ; espero sea de gran ayuda.

Creación de una aplicación Facebook API

Deberemos ingresar a nuestra cuenta de Facebook desde el siguiente enlace https://developers.facebook.com/apps/, en donde podremos iniciar la creación de una nueva aplicación.

Aquí podrás crear tu aplicación que usaremos con Facebook API

El proceso es muy sencillo, Al dar clic en “Agregar una nueva aplicación” nos solicitara algunos datos para poder configurar nuestra aplicación, damos clic en “Crear identificador de la aplicación”.
Deberas ingresar los datos solicitados para crear una aplicación Facebook API
Una vez finalizado el proceso veremos nuestra aplicación creada, básicamente es la configuración de toda aplicación. Regresaremos mas tarde para obtener las claves y accesos para conectarla a nuestra proyecto.

Estos son los datos que se darán de alta cuando creas tu aplicación, que utilizaremos con Facebook API

Creación de nuestro proyecto PHP

Nuestro proyecto constara de dos archivos. Por un lado “index”; se encargara iniciar sesión en nuestra aplicación y solicitar autorización de publicar en nombre el usuario, mientras que “callback”; realizara en palabras simples la publicación en nuestra cuenta de Facebook.

Ademas deberemos incluir la SDK de Facebook, así como una imagen para poder realizar la publicación.

Descarga de la SDK de Facebook

Para poder descargar la SDK he incluirla en nuestro proyecto deberemos tener instalado https://getcomposer.org/ , y ejecutar el siguiente comando dentro de nuestro proyecto.

composer require abraham/twitteroauth

Configuración de nuestro archivo index

Es muy simple como colocar el siguiente código, editando el mismo para colocar el appId correspondiente de su aplicación creada anteriormente.

<button onclick="checkLoginState()">Compartir</button>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'colocar appId',
      cookie     : true,
      xfbml      : true,
      version    : 'v2.10'
    });
    FB.AppEvents.logPageView();   
  };

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


	function checkLoginState(){
		FB.login(function(response){
            if(response.authResponse){
		    	window.location = 'callback.php?userID='+response.authResponse.userID+'&accessToken='+response.authResponse.accessToken;
		    }
        }, {scope: 'publish_actions'});
	}
</script>

Configuración de nuestro archivo callback

Aunque un poco más complejo que el archivo index, ya que este se encargara de realizar lo mas pesado del proceso; de cierta manera también es sencillo.

  1. Incluimos la SDK de facebook
    require_once 'vendor/autoload.php';
  2. Colocamos el siguiente código, cambiando loca valores de app_id, app_secret y default_graph_version por lo valores que se generaron al crear su aplicación.
    $fb = new \Facebook\Facebook([
      'app_id' => 'your app_id',
      'app_secret' => 'your app_secret',
      'default_graph_version' => ' your default_graph_version',
    ]);
  3. Copiamos y pegamos el siguiente código para compartir nuestra imagen, recuerda cambiar la ruta y nombre de tu recurso.
    $data = [
      'message' => 'Your message',
      'source'  => $fb->fileToUpload(__DIR__ . '/your_source.jpg'),
    ];
    //print_r($data); exit;
    try {
      $response = $fb->post('/'.$_GET['userID'].'/photos', $data, $_GET['accessToken']);
    } catch(Facebook\Exceptions\FacebookResponseException $e) {
      echo 'Graph returned an error: ' . $e->getMessage();
      exit;
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
      echo 'Facebook SDK returned an error: ' . $e->getMessage();
      exit;
    }
    $graphNode = $response->getGraphNode();

Por ultimo quiero comentarles que para que funcione correctamente, deberemos solicitar que habiliten la opción “publish_actions” dentro de nuestra aplicación, para ello deberemos mandar una solicitud de revisión de nuestra aplicación y cumplir con lo necesario , solo hay que seguir lo pasos que nos indican. Cualquier duda estamos para ayudar.