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.
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
Todos los parámetros, excepto state
, son obligatorios.
Parámetro | Valor de ejemplo | Descripción |
---|---|---|
|
| Identificador de la aplicación de Instagram que se muestra en el Panel de aplicaciones > Productos > Instagram > Visualización básica. |
|
| 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. |
|
| Establece este valor en |
|
| 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. |
|
| 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. |
https://api.instagram.com/oauth/authorize ?client_id=990602627938098 &redirect_uri=https://socialsizzle.herokuapp.com/auth/ &scope=user_profile,user_media &response_type=code
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.
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.
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ámetro | Valor |
---|---|
|
|
|
|
|
|
https://socialsizzle.herokuapp.com/auth/?error=access_denied &error_reason=user_denied &error_description=The+user+denied+your+request
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
Incluye los parámetros siguientes en el cuerpo de la solicitud POST.
Parámetro | Valor de ejemplo | Descripción |
---|---|---|
|
| Identificador de la aplicación de Instagram que se muestra en el Panel de aplicaciones > Productos > Instagram > Visualización básica. |
|
| Clave secreta de la aplicación de Instagram, que se muestra en Panel de aplicaciones > Productos > Instagram > Visualización básica. |
|
| Código de autorización que te pasamos en el parámetro |
|
| Establece este valor en |
|
| 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. |
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...
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.
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" }