Esta semana acabamos con la aventura de publicar en redes sociales desde PHP. Esta vez nos metemos a publicar una foto en Instagram por programación.
[ACTUALIZACIÓN 2020]
El método mostrado en este post se refiere a la antigua API. Espero tener este verano un manual para hacer lo mismo pero con la nueva API.
[Método antiguo]
Paso 1: Crea un perfil de Instagram de pruebas
Antes de nada crearemos una cuenta de Instagram para hacer pruebas. Si hacemos cosas mal podemos anular la cuenta que estemos usando. Mejor probar con una cuenta que no nos importe perder.
Esta vez no tenemos que crear aplicaciones, los datos que tenemos que usar son nuestro usuario/pass de la cuenta de Instagram en la que queremos publicar.
Paso 2: Descarga de librería Instagram
Gracias a php8legs tenemos una clase para publicar de forma fácil en instagram. Se puede descargar desde AQUI. Es necesario registrarse, pero solo es para la descarga, después no molestan con emails. La url directa de descarga (una vez registrado) es: http://php8legs.com/en/component/phocadownload/category/1-web-scraper?download=11:instagram-auto-post
Como hemos hecho en otras ocasiones, los archivos los copio a la carpeta «sdk/instagram».
En este ejemplo usaremos la clase instagram.class.php junto a la libreria de procesamiento de imágenes: SimpleImage
Así escalaremos la imagen, la recortamos a 800×800 y la subimos.
Paso 3: Al lio
Cargamos la libreria instagram.class.php, creamos el objeto, nos autenticamos ….
require_once '../../claviska/SimpleImage.php'; require_once '../../sdk/Instagram/instagram.class.php'; $caption = "Título de la publicacion inluyendo los #tags que quieras"; $imagen_original= "../imagen.jpg"; // ruta de la imagen $path_parts = pathinfo($imagen_original); $pathbase = $path_parts['dirname']; $imagen_800x800 = $pathbase.'/instagram-temp.jpg'; $image = new \claviska\SimpleImage(); $image->fromFile($imagen_original); $image->thumbnail(800,800); //escalo y recorto a 800 x 800 $image->toFile($imagen_800x800,'image/jpeg',80); //guardo a jpg con calidad de 80% unset($image); // elimino el objeto SimpleImage $insta = new instagram(); $response = $insta->Login($username, $password); // USUARIO Y PASS DE NUESTRA CUENTA DE INSTAGRAM if(strpos($response[1], "Sorry")) { echo "Request failed, there's a chance that this proxy/ip is blocked"; print_r($response); exit(); } if(empty($response[1])) { echo "Empty response received from the server while trying to login"; print_r($response); exit(); } $insta->Post($imagen_800x800, $caption); //Envío
Ejecutar…. y no funciona. Sigue adelante
Paso 4: Entrar en el perfil de Instagram
La primera vez que ejecutamos este script seguramente no se publique nada. Instagram bloquea las publicaciones desde nuevas ips, por lo que hay que entrar en instagram.com y autenticarse. En ese momento Instagram te preguntará que ha habido un intento de publicación desde X y si permites que se publique desde alli. Aceptar y el script funcionará perfectamente.
Una vez esté funcionando, cambia el usuario/pass a los reales y vuelve a revisar el Paso 4.
Y listo, fin a esta serie de artículos para publicar en redes sociales desde PHP!!
hernan
Hola mono, es posible probar esto desde localhost?
Prime Monkey
Lo puedes hacer sin problema. Yo para probarlo lo tengo en un ordenador local. Espero que lo hayas conseguido!
Por cierto, ten cuidado y usa una cuenta de pruebas a la hora de programar y probar.
guillermo
hola no soy programador ..cual es la variable $product_image en el codigo?? desde ya gracias
Prime Monkey
Hola Guillermo
Bien visto. Había un error en el código que he publicado (ya sabes, cambios de última hora). No era $product_image, era $imagen_original.
Espero que aun esté a tiempo de ayudarte. Gracias!
Luis
Como pongo un salto de linea en al titulo?
Ejemplo probe así:
Maradona visitó \n\r Dubai
Maradona visitó Dubai
¿?
Gracias
Prime Monkey
Hola Luis
Estoy casi seguro que en instagram no se pueden poner saltos de linea. Al menos desde la app del movíl a mi no me deja.
Jose Antonio
¿Es posible hacer un post con multiples imagenes?
Gracias de antemano
Lucas
Hola,
Pruebo con este código, no me muestra ningún fallo pero no se sube la imagen…
Gracias
Lucas
Hola,
Hago todos los pasos: Creo una cuenta nueva de instagram, añado librerías y utilizo ese código, sin embargo cuando me autentifico no me sale ningún aviso para aceptar el script por lo tanto no se sube la imagen…
Me falta hacer algo?
Gracias
mariano
saludos amigos excelente codigo lo puse a prueba y muy bien, lo hice con un cuenta instagram de prueba y funciona bien pero cuando trato de ejecutarlo para otra cuenta instagram aparece en la app de instagram «detectamos un intento de inicio de sesion inusual» hago clic en el boton fui yo pero sigue apareciendo, que puedo hacer ? gracias
Emilio
El metodo funcionaba perfectamente saben si han habido cambios, ya no publica aunque detecta los inicios de sesion
rafael
saludos, probado pero creo que ya no funciona, conoce alguien alguna libreria similar que funcione ? gracias
Prime Monkey
Hola. Tanto para Instagram como para Facebook han cambiado muchas cosas desde que hice este post. A ver si en verano tengo tiempo de hacer un tutorial explicando paso a paso el proceso. Os iré informando.
Ricardo Avalos
Amigo Mono, por lo visto han desactivado el registro de usuarios en el sitio web donde se descarga la clase. Numerosas personas han preguntado eso mismo y en la web no contestan. Será posible que coloques un link para descargarla desde tu web?
Muchas gracias!!
Prime Monkey
Hola. Tanto para Instagram como para Facebook han cambiado muchas cosas desde que hice este post. A ver si en verano tengo tiempo de hacer un tutorial explicando paso a paso el proceso. Os iré informando.