Control de acceso (OAuth)

Contenidos

Crea tu cuenta y tu aplicación

Para poder comunicarse con nuestra API, el correo deberá

  1. Crear una cuenta empresa en http://www.mercadolibre.com/
  2. 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

  3. Finalizado ésto, con el app ID y secret key se podrá obtener el access_token que servirá para comunicarse con nuestra API.
Nota:
El app ID se deberá informar a Mercado Libre para poder configurar los permisos necesarios.

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.

Importante:
La cantidad de access tokens en simultaneo debe ser igual a la cantidad de nodos desde los que se envian los requests (no generar un access token por cada request). Cada token debe ser regenerado antes de su expiración (6 horas).