Anteriormente habiamos explicado cómo publicar en Facebook. Esta vez nos centramos en cómo publicar en Twitter desde PHP. Como podéis ver por el tamaño del post en Twitter es muuuuuchoooo más sencillo.
Paso 1: Crea una aplicación en Twitter
Como hicimos en Facebook lo primero es crear una aplicación en Twitter.
Una vez creada tendremos los datos de:
- Consumer Key
- Consumer Secret
- Access Token
- Access Token Secret
Paso 2: Descarga de libreria Twitteroauth
Una vez tenemos los datos, podemos meternos directamente en la programación. Lo primero es descargar la libreria: Twitteroauth
Descarga el directorio completo y copialo a un subdirectorio de tu aplicación php. En mi caso lo copio a la carpeta «sdk/twitteroauth»
Paso 3: A programar
Cargamos el autoload de la libreria de Twitter y empezamos a programar.
En este ejemplo subimos también la imagen que queremos compartir junto al texto.
require "../../sdk/twitteroauth/autoload.php"; try { $connection = new Abraham\TwitterOAuth\TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); $imagen = "../../laimagen.jpg"; $message = "mensaje que quiero compartir"; $media1 = $connection->upload('media/upload', ['media' => $imagen]); $parameters = [ 'status' => $message, 'media_ids' => implode(',', [$media1->media_id_string]), ]; $result = $connection->post('statuses/update', $parameters); } catch (Exception $e) { echo 'Error: ' . $e->getMessage(); }
El truco es que hay que subir primero la imagen antes de mandar el texto del mensaje a Twitter.
De una forma muy sencilla puedes publicar mensajes en un perfil de Twitter. Incluida la imagen.
Próximamente…. cómo publicar en Instagram!!
david
Buenas que gran articulo!!
Amigo una duda me sale este error
Notice: Undefined property: stdClass::$media_id_string in C:\xampp\htdocs\twitter\index.php on line 19
A que hace referencia
Prime Monkey
Hola David
El error parece que se produce al dar de alta el tweet con imagen asociada, verdad?
Asegurate que la instrucción que sube el archivo se ejecuta correctamente:
$media1 = $connection->upload(‘media/upload’, [‘media’ => $imagen]);
Prueba a hacer un print_r($media1) a ver que información te da.
¿podría ser que la ruta de la imagen que subes no sea la correcta y no lo encuentre?
Suerte, ya nos informarás de tus avances!