Obtener permisos e identificadores de acceso

En esta guía se explica cómo utilizar la ventana de autorización para obtener identificadores de acceso de usuario de Instagram de corta duración y permisos de usuarios de Instagram.

Paso 1: Obtener autorización

La ventana de autorización permite que los usuarios de la aplicación concedan a tu aplicación permisos e identificadores de acceso de usuario de Instagram de corta duración. Cuando el usuario inicie sesión y elija a qué datos permite que acceda tu aplicación, lo volveremos a dirigir a la aplicación e incluiremos un código de autorización que podrás intercambiar por un identificador de acceso de corta duración.

Para iniciar el proceso, obtén la ventana de autorización y preséntala al usuario:

https://api.instagram.com/oauth/authorize
  ?client_id={instagram-app-id}
  &redirect_uri={redirect-uri}
  &scope={scope}
  &response_type=code
  &state={state}        //Optional

Parámetros de la cadena de consulta

Todos los parámetros, excepto state, son obligatorios.

ParámetroValor de ejemploDescripción

client_id
Obligatorio
Cadena numérica

990602627938098

Identificador de la aplicación de Instagram que se muestra en el Panel de aplicaciones > Productos > Instagram > Visualización básica.

redirect_uri
Obligatorio
Cadena

https://socialsizzle.herokuapp.com/auth/

URI al que redirigiremos a los usuarios cuando aprueben o denieguen la solicitud de permiso. Asegúrate de que coincide exactamente con uno de los URI base de la lista de URI de OAuth válidos. Ten en cuenta que es posible que el panel de aplicaciones haya añadido una barra inclinada al final de los URI. Por este motivo, te recomendamos que consultes la lista para comprobarlo.

response_type
Obligatorio
Cadena

code

Establece este valor en code.

scope
Obligatorio
Lista de valores separados por comas o espacios

user_profile,user_media

Lista de valores separados por comas o lista de valores separados por espacios con codificación de URL de los permisos que se van a solicitar al usuario de la aplicación. user_profile es obligatorio.

state
Cadena

1

Valor opcional que indica el estado específico de un servidor. Se puede utilizar, por ejemplo, como protección ante problemas de CSRF. Incluiremos este parámetro y su valor al redirigir al usuario de vuelta.

URL de la ventana de autorización de ejemplo

https://api.instagram.com/oauth/authorize
  ?client_id=990602627938098
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=user_profile,user_media
  &response_type=code

Autorización correcta

Si la autorización es correcta, redirigiremos al usuario a tu redirect_uri y te pasaremos un código de autorización a través del parámetro de la cadena de consulta code. Captura el código para que tu aplicación pueda intercambiarlo por un identificador de acceso de usuario de Instagram de corta duración.

Los códigos de autorización son válidos durante una hora y solo pueden utilizarse una vez.

Ejemplo de redirección de autenticación correcta

https://socialsizzle.herokuapp.com/auth/?code=AQBx-hBsH3...#_

Ten en cuenta que #_ se anexará al final del URI de redireccionamiento, pero que no forma parte del propio código, por lo que debes quitarlo.

Autorización cancelada

Si el usuario cancela el proceso de autorización, lo redirigiremos a tu redirect_uri y anexaremos los parámetros de error siguientes. Es tu responsabilidad aceptar el error en estas situaciones y mostrar un mensaje apropiado a los usuarios.

ParámetroValor

error

access_denied

error_reason

user_denied

error_description

The+user+denied+your+request

Ejemplo de redireccionamiento de autorización cancelada

https://socialsizzle.herokuapp.com/auth/?error=access_denied
  &error_reason=user_denied
  &error_description=The+user+denied+your+request

Paso 2: Intercambiar el código por un identificador

Cuando recibes un código, lo puedes intercambiar por un identificador de acceso de corta duración. Para ello, envía una solicitud POST al extremo siguiente:

POST https://api.instagram.com/oauth/access_token

Parámetros del cuerpo

Incluye los parámetros siguientes en el cuerpo de la solicitud POST.

ParámetroValor de ejemploDescripción

client_id
Obligatorio
Cadena numérica

990602627938098

Identificador de la aplicación de Instagram que se muestra en el Panel de aplicaciones > Productos > Instagram > Visualización básica.

client_secret
Obligatorio
Cadena

a1b2C3D4

Clave secreta de la aplicación de Instagram, que se muestra en Panel de aplicaciones > Productos > Instagram > Visualización básica.

code
Obligatorio
Cadena

AQBx-hBsH3...

Código de autorización que te pasamos en el parámetro code al redirigir al usuario al redirect_uri.

grant_type
Obligatorio
Cadena

authorization_code

Establece este valor en authorization_code.

redirect_uri
Obligatorio
Cadena

https://socialsizzle. heroku.com/auth/

URI de redireccionamiento que nos pasaste al dirigir al usuario a nuestra ventana de autorización. Tiene que ser el mismo, ya que, de lo contrario, se rechazará la solicitud.

Ejemplo de solicitud

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id=990602627938098 \
  -F client_secret=eb8c7... \
  -F grant_type=authorization_code \
  -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \
  -F code=AQBx-hBsH3...

Ejemplo de respuesta correcta

Si es correcta, la API devolverá una carga útil JSON con el identificador de usuario y de acceso de corta duración.

{
  "access_token": "IGQVJ...",
  "user_id": 17841405793187218
}

Captura el valor de access_token. Se trata del identificador de acceso de usuario de Instagram de corta duración que la aplicación puede utilizar para acceder a los extremos de la API de visualización básica de Instagram.

Ejemplo de respuesta rechazada

Si el formato de la solicitud es incorrecto de alguna forma, la API devolverá un error.

{
  "error_type": "OAuthException",
  "code": 400,
  "error_message": "Matching code was not found or was already used"
}