Como obtener un Access Token de Instagram sin compartir tu ID de cliente y clave secreta a otros sitios web
Tiempo total: 61 días con 17:10:34 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”.
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