to top

Publicar en Instagram desde PHP

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?

    29 marzo, 2019 a 9:46 am Responder
  • guillermo

    hola no soy programador ..cual es la variable $product_image en el codigo?? desde ya gracias

    24 mayo, 2019 a 8:06 am Responder
  • Luis

    Como pongo un salto de linea en al titulo?

    Ejemplo probe así:

    Maradona visitó \n\r Dubai
    Maradona visitó Dubai

    ¿?

    Gracias

    1 junio, 2019 a 3:46 pm Responder
  • Jose Antonio

    ¿Es posible hacer un post con multiples imagenes?
    Gracias de antemano

    25 julio, 2019 a 11:31 pm Responder
  • Lucas

    Hola,
    Pruebo con este código, no me muestra ningún fallo pero no se sube la imagen…

    Gracias

    22 octubre, 2019 a 11:45 am Responder
  • 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

    22 octubre, 2019 a 11:57 am Responder
  • 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

    23 octubre, 2019 a 7:35 pm Responder
  • Emilio

    El metodo funcionaba perfectamente saben si han habido cambios, ya no publica aunque detecta los inicios de sesion

    30 octubre, 2019 a 3:06 am Responder
  • rafael

    saludos, probado pero creo que ya no funciona, conoce alguien alguna libreria similar que funcione ? gracias

    25 marzo, 2020 a 6:01 pm Responder
  • 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!!

    26 mayo, 2020 a 5:33 pm Responder

Deja un comentario