Control de acceso (OAuth)
Contenidos
Crea tu cuenta y tu aplicación
Para poder comunicarse con nuestra API, el correo deberá
- Crear una cuenta empresa en http://www.mercadolibre.com/
- Una vez creada la cuenta se deberán seguir los pasos a continuación para crear una aplicación:
Con el usuario logueado, acceder a http://applications.mercadolibre.com/ y seleccionar país de procedencia.



Vincular cuenta del site de desarrolladores a la cuenta del usuario logueado.

Proceder a crear la nueva aplicación.
Una vez logueado, ir a la seccion "Mis Aplicaciones".

Clickear en el boton "Crear nueva aplicación".
Nota: Si ya se tiene una aplicación, entonces editarla para completar los siguientes pasos:

Completar los campos y clickear en "Continuar":

En la siguiente pantalla, completar "Redirect URI" y "Notificaciones callbacks URL" con cualquier dirección https.



Por último, clickear en el botón "Crear".

Esto va a devolver el APP ID. Una vez creado, se puede chequear en la sección "Mis aplicaciones".

También se puede chequear la aplicación creada en el siguiente endpoint usando el client_id (applicationId) como parámetro:
https://api.mercadolibre.com/applications/4458888970304935

- Finalizado ésto, con el app ID y secret key se podrá obtener el access_token que servirá para comunicarse con nuestra API.

Cómo conseguir mi Access Token
Para garantizar que sólo usuarios autorizados puedan enviar notificaciones, es necesario usar un access_token de aplicación autorizado.
Ejemplo para obtener mi access token
Request:
POST api.mercadolibre.com/oauth/token{
"client_id": 4458888970304935,
"client_secret": "********ASSDF",
"grant_type": "client_credentials"
}Parámetros:
grant_type: client_credentials se usa cuando las aplicaciones solicitan un token de acceso, usando solo sus credenciales, para acceder a sus propios recursos, no en nombre de un usuario.
client_id: es el APP ID de la aplicación que se creó.
client_secret: es el Secret Key que se generó al crear la aplicación.
Response:
{
"access_token": "APP_USR-4458888970304935-020116-*************-281033969",
"token_type": "bearer",
"expires_in": 21600,
"scope": "offline_access read write",
"user_id": 281033969
}Response Error:
"message": "invalid client_id or client_secret",
"error": "invalid_client",
"status": 400,
"cause": []
}Referencia de códigos de error
invalid_client: el client_id y/o client_secret de tu aplicación provisto es inválido.
invalid_grant: este error se puede producir por diferentes motivos relacionados con el authorization_code y refresh_token, puede ser porque el authorization_code o refresh_token son inválidos, fueron revocados o expiraron, se envió en el flujo incorrecto, pertenece a otro cliente o si el redirect_uri usado en el flujo de autorización no coinciden con el configurado en su aplicación.
invalid_scope: el scope solicitado es inválido, desconocido o está mal formado. Los valores permitidos para el parámetro scope son: “offline_access”,”write”,”read”.
invalid_request: la solicitud no incluye un parámetro obligatorio, incluye un parámetro o valor de parámetro no soportado, hay algún valor duplicado o está mal formada de otro modo.
unsupported_grant_type: los valores permitidos para grant_type son "client_credentials", “authorization_code” o “refresh_token”.
forbidden (403): la llamada no autoriza el acceso, posiblemente se está utilizando el token de otro usuario, o para el caso de grant el usuario no tiene acceso a la URL de Mercado Libre de su site (.ar, .br, .mx, etc) y debe verificar que su conexión o navegador funcione correctamente para los domínio de MELI.
local_rate_limited (429): por llamadas excesivas se rechaza la request temporalmente. Inténtalo de nuevo en unos segundos.
unauthorized_client: la aplicación no tiene autorización para el usuario solicitado o la autorización existente no autoriza los scopes con los que se quiere crear el token.
unauthorized_application: la aplicación está bloqueada, por lo tanto, no es posible operar hasta que resuelva el problema.
¿Qué sucede con mi access_token luego de 6 horas?
Se deberá solicitar un nuevo token mediante "client_credentials" (POST anterior). Esto evita que el token anterior quede vencido mediante la generación de uno nuevo.