Como obtener un Access Token de Instagram sin compartir tu ID de cliente y clave secreta a otros sitios web

Visitas: 3358  
Tiempo total: 61 días con 6:31:24 hrs  

Recientemente estuve buscando la forma de obtener el Access Token de Instagram para poder mostrar, en un widget, las 6 últimas publicaciones de mi cuenta de Instagram. Lamentablemente, la API de dicha empresa no te lo da, únicamente te da tu ID de cliente y tu clave secreta.

Buscando en Google puedes encontrar varios sitios que pueden generar tu token utilizando tu ID y tu clave, pero obviamente esos sitios web almacenarán tus datos. A pesar de que la API de Instagram es segura y esas terceras empresas no podrán obtener más que tus publicaciones, top me gusta y otro tipo de información pública, ¿Por qué no lo hacemos nosotros mismos?

Paso 1: obtén tú ID de cliente y clave secreta

Inicia sesión en Instagram en tu navegador web y abre la siguiente dirección URL: https://www.instagram.com/developer/ en la parte superior derecha estará en el menú “manage clients”.

Si ya creaste un cliente haz clic en “manage” si no, puedes agregar uno nuevo en “register a new client”. En el campo “valid redirect URIs” debes de agregar la dirección URL de un archivo PHP que puedas subir a tu servidor, en este ejemplo será https://www.elconspirador.com/instagram.php

Si ya has creado tu cliente, entonces podrás modificar este campo para agregar la dirección URL, para esto debes de ir a la pestaña “security” de la página “manage”.

Redirección URL valida en la API de Instagram

Después de finalizado el proceso observarás tu ID de cliente y clave secreta en la pestaña de detalles.

Paso 2: sube un archivo a tu servidor para ver toda la información del header que recibe

En la página developer de Instagram, en el menú lateral derecho observarás el enlace “Authentication”, que es donde te explican cómo obtener tu Access Token:

https://www.instagram.com/developer/authentication/

Básicamente, el proceso consiste en enviar parámetros vía POST a la API y guardar la información de respuesta que obtengamos. Para empezar, sube un archivo PHP a tu servidor y como habíamos mencionado antes, en este ejemplo se llamará instagram.php con el siguiente contenido:

<?php
foreach($_REQUEST AS $key => $value){
print_r($key);
echo " -----> ";
print_r($value);
echo "<br/><br/>";
}
?>

Paso 3: obtener tu código

En la página authentication de Instagram, el paso 1 es copiar, modificar y seguir la siguiente URL:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

En este ejemplo, el ID de cliente es 123456789 y la redirección que habíamos registrado en nuestro cliente es https://www.elconspirador.com/instagram.php. La dirección URL quedaría de la siguiente manera:

https://api.instagram.com/oauth/authorize/?client_id=123456789&redirect_uri=https://www.elconspirador.com/instagram.php&response_type=code

Al momento de ingresar a esa dirección URL, el archivo instagram.php en nuestro server nos mostrará varios valores, el primero de ellos es nuestro código:

code —–> A1B2C3D4

Paso 4: obtener el Access Token

A continuación en la API de Instagram, debemos utilizar cURL para obtener el token:

curl -F 'client_id=CLIENT_ID' \ 
-F 'client_secret=CLIENT_SECRET' \ 
-F 'grant_type=authorization_code' \ 
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \ 
-F 'code=CODE' \ 
https://api.instagram.com/oauth/access_token

En vez de esto vamos a utilizar el método POST, en el archivo instagram.php agrega el siguiente código:

<form action="https://api.instagram.com/oauth/access_token" method="post">
<input type="text" name="client_id" value="CLIENT_ID" />
<input type="text" name="client_secret" value="CLIENT_SECRET" />
<input type="text" name="grant_type" value="authorization_code" />
<input type="text" name="redirect_uri" value="AUTHORIZATION_REDIRECT_URI" />
<input type="text" name="code" value="CODE" />
<input type="submit" value="enviar" />
</form>

En este ejemplo, si nuestra clave secreta es “s1e2c3r4e5t6”, el formulario HTML debería de ser:

<form action="https://api.instagram.com/oauth/access_token" method="post">
<input type="text" name="client_id" value="123456789" />
<input type="text" name="client_secret" value="s1e2c3r4e5t6" />
<input type="text" name="grant_type" value="authorization_code" />
<input type="text" name="redirect_uri" value="https://www.elconspirador.com/instagram.php" />
<input type="text" name="code" value="A1B2C3D4" />
<input type="submit" value="enviar" />
</form>

A continuación, guarda el archivo, carga tu página de ejemplo y envía el formulario HTML, Instagram te debería de responder con tu Access Token, que podrás utilizar en cualquier aplicación.

Paso 5: prueba tu token de acceso

Para verificar que lo obtuviste correctamente, al utilizar el siguiente enlace URL y reemplazar MI_ACCESS_TOKEN por tu token, deberías de ver la información de tu perfil de Instagram:

https://api.instagram.com/v1/users/self/?access_token=MI_ACCESS_TOKEN


Para recibir boletines de información, por favor escribe tu correo electrónico:

Por favor ingrese un correo electrónico valido.
Registrado correctamente!