Twitter API
API's 25 agosto, 2017 0

Twitter API y PHP como publicar fotos

Para poder implementar Twitter API utilizaremos TwitterOAuth la librería php más popular para usar con la API Oauth REST de Twitter. Y básicamente hoy les mostrare como poder publicar imágenes desde nuestro proyecto PHP.

Esto a origen de que cada vez es más solicitado dentro del desarrollo, y para ser sincero; y a pesar de que contar con un amplia documentación no se me fue fácil en un principio. Así que espero que esta información sea de mucha utilidad para mucho.

Sin más, iniciemos con este tutorial

Creación de una aplicación Twitter

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

Creación de nuestra aplicación

El proceso es muy sencillo, Twitter Application Management nos solicitara algunos datos para poder configurar nuestra aplicación, aunque con solo proporcionar lo más básicos sera mas que suficiente.

Detalles de nuestra aplicación

 

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.

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

Ademas deberemos incluir la librería TwitterOAuth, así como una imagen para poder realizar la publicación.

Descarga de la librería TwitterOAuth

Para poder incluir la librería deberemos tener instalado https://getcomposer.org/ , y ejecutar el siguiente comando.

composer require abraham/twitteroauth

Configuración de nuestro archivo index

  1. Incluimos la librería descargada. Para este tutorial manejaremos las sesiones, así que también las iniciaremos.
    require_once 'vendor/autoload.php';
    use Abraham\TwitterOAuth\TwitterOAuth;
     
    session_start();
  2. Creamos un objeto TwitterOAuth, proporcionando las credenciales de muestra aplicación, las cuales encontraremos dentro de nuestra aplicación.
    $twitteroauth = new TwitterOAuth('Consumer Key', 'Consumer Secret');

    Claves de acceso a nuestra aplicación

  3. Solicitamos un Token a nuestra aplicación
    $request_token = $twitteroauth->oauth(
        'oauth/request_token', [
            'oauth_callback' => 'http://localhost/twitter-oauth-rest-api/callback.php'
        ]
    );
  4. Lanzamos una excepción en caso de que algo salga mal
    $request_token = $twitteroauth->oauth(
        'oauth/request_token', [
            'oauth_callback' => 'http://localhost/twitter-oauth-rest-api/callback.php'
        ]
    );
  5. Guardamos el token de la aplicación en sesión
    $_SESSION['oauth_token'] = $request_token['oauth_token'];
    $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

Generamos la URL a donde solicitaremos autorización a nuestra aplicación y redireccionamos

$url = $twitteroauth->url(
    'oauth/authorize', [
        'oauth_token' => $request_token['oauth_token']
    ]
);
header('Location: '. $url);

Configuración de nuestro archivo callback

  1. Incluimos la librería descargada
    require_once 'vendor/autoload.php';
    use Abraham\TwitterOAuth\TwitterOAuth;
     
    session_start();
  2. Verificamos autentificación a nuestra aplicación
    $oauth_verifier = filter_input(INPUT_GET, 'oauth_verifier');
  3. Si algo salió mal, solicitamos nuevamente una autorización
    if (empty($oauth_verifier) ||
        empty($_SESSION['oauth_token']) ||
        empty($_SESSION['oauth_token_secret'])
    ) {
        // something's missing, go and login again
        header('Location: http://localhost/twitter-oauth-rest-api/');
    }
  4. Creamos un objeto TwitterOAuth con el token que almacenamos en sesión
    $connection = new TwitterOAuth('Consumer Key', 'Consumer Secret', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
  5. Solicitamos un Token de usuario
    $token = $connection->oauth(
        'oauth/access_token', [
            'oauth_verifier' => $oauth_verifier
        ]
    );
  6. Creamos un objeto TwitterOAuth con el token obtenido anteriormente
    $twitter = new TwitterOAuth(
       'NhhjIOw7m74jxsKpcsVKHYCR7',
        '8tnVVtDtwvlytw1jtLBCApj8vpn9KE1s82fGrKGOMSkY16omps',
        $token['oauth_token'],
        $token['oauth_token_secret']
    );
  7. Verificamos las credenciales de usuario y acceso con el token
    $content = $twitter->get("account/verify_credentials");
    $statues = $twitter->get("https://api.twitter.com/oauth/access_token");
  8. Configuramos los parámetros para enviar nuestro Tweet
    $media   = $twitter->upload('media/upload', ['media' => __DIR__ . '/image.jpg']);
    $parameters = array('status' => 'Gracias por compartir', 'media_ids' => $media->media_id_string);
  9. Enviamos la petición para publicar en nuestra cuenta de Twitter
    $twitter->post('statuses/update', $parameters);