• 0
LEANDROUNO

Error redirect_uri_mismatch

Question

Buen dia, recien comienzo con la api en PHP.

Cuando intento autenticarme me da el siguiente error:

 error=redirect_uri_mismatch&error_description=Your+client+callback+must+be+the+same+as+your+redirect_uri 

La pagina web donde genero la autenticacion es la misma que puse en la app de ML

Como lo puedo solucionar ? Muchas Gracias

Share this post


Link to post
Share on other sites

22 answers to this question

Recommended Posts

  • 0

Verifica bien la URL que estas usando cuando intentas autorizar. Es decir, si estas usando el SDK de Mercado Libre:

$meli->getAuthUrl( $url, 'https://auth.mercadolibre.com.ar' );

Esta URL: $url

Edited by Woomelly

Share this post


Link to post
Share on other sites
  • 0

Hola buen día estoy empezando con la API y estoy trabajando sobre PHP pero me marca el error sobre la imagen y como se puede ver en la captura si me da el CODE en el link , pero no me da el acceso a mi aplicación , mi duda es, estarán mal mi URL y mi URI lo que pasa es que eso me confunde no se que colocar ahí, en el URI tengo el siguiente link = https://auth.mercadolibre.com.mx/authorization?response_type=code&client_id="AQUI MI ID" (sin las comillas) y en la URL de los callback no tengo nada y en el código de example_login tengo el redirectURI tal cual así como lo puse, espero me puedan ayudar 

Muchas garcias.  

Captura.JPG

Share this post


Link to post
Share on other sites
  • 0

Hola @mldev mi ID de aplicación la ingrese correctamente , por eso no hay problema , el problema sospecho que viene de las URL´s  como mencione, en la URL ingrese https://auth.mercadolibre.com.mx/authorization?response_type=code&client_id=MI_ID

y en la dirección URI sinceramente no se que ingresar, ahí que es lo que tengo que poner ?

Gracias por responder 

Share this post


Link to post
Share on other sites
  • 0

Hola, esque no estas definiendo la redirect_url, mira:

// Basic data from de app
 $appId = 'tuId';
 $secretKey = 'tuSecret';
 $redirectURI = 'https://tusitioweb.com/login.php';//En esta parte es donde recibiras la respuesta y procesaras la informacion de la session
 $siteId = 'MLM';//El ID de mercadolibre de tu pais, por ejemplo yo soy de Mexico, por lo tanto es MLM
.
.
Inicias la clase de meli y todo ese rollo
.
.
.
$urlAut = $meli->getAuthUrl($redirectURI, Meli::$AUTH_URL[$siteId]);
echo '<a href="'.$urlAut.'">LOG IN</a>';

Te recomiendo que veas en el SDK el ejemplo "example_login.php" esta muy facil de entender y basicamente lo que viene ahi es lo que tienes que hacer, claro, le tienes que agregar seguridad a las variables y todo pero eso es lo que se tiene que hacer.

 

Saludos

Edited by Fernando Aguirre

Share this post


Link to post
Share on other sites
  • 0

Hola buen día @Fernando Aguirre gracias por responder, pero ahora me aparece este mensajeCaptura1.thumb.JPG.820cf53b786798ec5ad3b87c31727389.JPG

Lo estoy haciendo de manera local y en mis variables lo estoy guardando de la siguiente manera : Captura2.thumb.JPG.fb3db2c2a1011a1356ace922462215da.JPG

mandándolo a llamar desde example_login.php :Captura3.thumb.JPG.cad141a201d6c44287987631941518d9.JPG

Y en mi aplicación mando a llamar el enlace de la siguiente manera  (Cabe mencionar que dirección si esta bien escrita , solo que en la captura no se aprecia bien el guion bajo de example_login.php):

Captura4.JPG.cb460ce745f2fda13b06af2e1dc20dc0.JPG

Muchas gracias ,espero y me puedan decir que estoy haciendo mal

Edited by Pedro moreno

Share this post


Link to post
Share on other sites
  • 0

Y por fin pude conectarme Captura5.JPG.1c79f6ea135081e8029785995d10d89b.JPG cuando me conecto sucede lo siguiente

algo así como si estuviera en mantenimientoCaptura6.JPG.ca4875ee2ba785cbcb798ff58f5f207d.JPG

Esta ves a que se debe el error?, claro si me pueden ayudar o darme una pista estaría agradecido 

Muchas gracias.

Edited by Pedro moreno

Share this post


Link to post
Share on other sites
  • 0
12 hours ago, Pedro moreno said:

Y por fin pude conectarme Captura5.JPG.1c79f6ea135081e8029785995d10d89b.JPG cuando me conecto sucede lo siguiente

algo así como si estuviera en mantenimientoCaptura6.JPG.ca4875ee2ba785cbcb798ff58f5f207d.JPG

Esta ves a que se debe el error?, claro si me pueden ayudar o darme una pista estaría agradecido 

Muchas gracias.

¿Estas trabajando en localhost o en un sitio en línea con protocolo SSL?

Share this post


Link to post
Share on other sites
  • 0
1 hour ago, Woomelly said:

¿Estas trabajando en localhost o en un sitio en línea con protocolo SSL?

Hola buenos días, sí, estoy trabajando de manera local, con wampserver.

Share this post


Link to post
Share on other sites
  • 0
1 minute ago, Pedro moreno said:

Hola buenos días, sí, estoy trabajando de manera local, con wampserver.

Ese es tu problema. ¿Cómo la app de MercadoLibre va a saber donde queda localhost? Quizas todavía si colocaras la IP pública de servidor local. Recuerda que estamos hablando de un servicio de tercero que envia una notificación a una URL en específico. Es increible que hayas podido colocar una URL local en tu aplicación dando que no "estaba" permitido y no debería de estarlo =/

Share this post


Link to post
Share on other sites
  • 0
16 minutes ago, Woomelly said:

Ese es tu problema. ¿Cómo la app de MercadoLibre va a saber donde queda localhost? Quizas todavía si colocaras la IP pública de servidor local. Recuerda que estamos hablando de un servicio de tercero que envia una notificación a una URL en específico. Es increible que hayas podido colocar una URL local en tu aplicación dando que no "estaba" permitido y no debería de estarlo =/

Exactamente, es lo que note al meter el HTTP:// dentro de REDIRECT URI, creí que no tendría ningún problema porque me lo acepto, pero lo que vi es que te pide tener un HTTPS://, aunque bueno eso lo coloque de un principio , ahorita en realidad como lo tengo, es de la siguiente manera : Captura1.JPG.f912cce6cbbf44443f4f13e60f896072.JPG

Y así es como me autorizo la conexión, solo que después me aparece la ventana que menciono arriba, con el mensaje de INTÉNTALO MAS TARDE POR FAVOR

Share this post


Link to post
Share on other sites
  • 0
4 minutes ago, Pedro moreno said:

Exactamente, es lo que note al meter el HTTP:// dentro de REDIRECT URI, creí que no tendría ningún problema porque me lo acepto, pero lo que vi es que te pide tener un HTTPS://, aunque bueno eso lo coloque de un principio , ahorita en realidad como lo tengo, es de la siguiente manera : Captura1.JPG.f912cce6cbbf44443f4f13e60f896072.JPG

Y así es como me autorizo la conexión, solo que después me aparece la ventana que menciono arriba, con el mensaje de INTÉNTALO MAS TARDE POR FAVOR

No, no, no, no lo estas haciendo muy mal. Tienes que usar tu propia página para recibir la notificaciones. En vez de tener "localhost" tienes que subir esos archivos a un site con dominio propio (SSL), el cual puedas acceder públicamente y vas a colocar esa URL en tu aplicación de MercadoLibre. Es lo mismo que estas haciendo en local pero en un sitio público.

Share this post


Link to post
Share on other sites
  • 0
39 minutes ago, Woomelly said:

No, no, no, no lo estas haciendo muy mal. Tienes que usar tu propia página para recibir la notificaciones. En vez de tener "localhost" tienes que subir esos archivos a un site con dominio propio (SSL), el cual puedas acceder públicamente y vas a colocar esa URL en tu aplicación de MercadoLibre. Es lo mismo que estas haciendo en local pero en un sitio público.

Gracias por la observación amigo y por la pronta respuesta , déjame implementarlo como me comentas y a ver si corro con éxito 

Share this post


Link to post
Share on other sites
  • 0

Hola, coincido con Woomelly, estabas haciendolo muy mal.

Tienes que tener tu sitio y si o si, SSL, si no las notificaciones no te van a funcionar, creo que no se puede trabajar al 100% en localhost. Usa cloudfare junto con tu dominio para obtener https (SSL)

Saludos!

Share this post


Link to post
Share on other sites
  • 0

Hola de nuevo, gracias por tu respuesta Fernando, mi GRAN pregunta es: ¿Se puede trabajar totalmente de manera local?, se que me respondiste que no Fernando, pero quiero hacer con ello lo que es un cronjob o demonio, lo que pasa es que realizo la conexión y si puedo ingresar a la Autenticación , pero a la Autorización si de plano no me deja ingresar, por eso hago esa pregunta, ya que de hecho todo sera de manera local,  ya tengo estos datos :Captura.JPG.49638065d3bc4471a0aba6363fe1b45c.JPG  tengo entendido que estos datos son necesarios para la Autorización.

los datos anteriores solo me los da cuando ingreso mi REDIRECT URI así:   Captura2.JPG.caf8ff4336f6ccf47382d76ec2456c29.JPG 

 

 

Pero cuando ingreso :

https://auth.mercadolibre.com.ar/authorization?response_type=code&client_id=App_id

es cuando ya me dice que no existe la aplicación.

Espero me puedan orientar un poco más, ya que bueno es la primera vez que trabajo con esta API.

Muchas gracias y Saludos.

Edited by Pedro moreno

Share this post


Link to post
Share on other sites
  • 0

Algo anda mal, eso no deberia de funcionar, para empezar no te permite poner http en el redirect uri.

Lo que puedes hacer es obtener por primera vez el token y refresh y ya con un cronjob nomas le estas haciendo refresh, sin la necesidad de estarte haciendo login, eso es lo que se supone que se debe de realizar, asi cada 5 horas corres el cron y se actualiza el token, y asi ya podrias trabajar en localhost, pero claro, no te llegarian notificaciones de nada porque ML no sabria a donde mandarlas.

Depenede mucho de lo que estes haciendo, si vas a llevar un tracking de ventas y asi donde necesitas saber que ventas has realizado al momento, sin la ayuda de las notificaciones se pone mas complicado porque tendrias que hacer un cron para estar checando ventas nuevas.

Si lo unico que quieres es jalar datos de la API y no te imporan las notificaciones, entonces sigue tu camino y ya jajaja

Share this post


Link to post
Share on other sites
  • 0

Es que de hecho en la información para la autorización en el SERVER-SIDE aparece que si se puede utilizar EL http:// (pero solo de manera localhost) :server-side.JPG.790aba987f173206f7f2d5bc6f763c8e.JPG

si obtengo el token y el refresh , pero es necesario la autorización, no?  y es que cuando llego a ese punto ya no me permite pasar ? 

Exactamente, quiero trabajar solo de manera local con un cronjob y de hecho algo así vi que publicaste, pero por ahora quiero resolver este inconveniente que me esta consumiendo mucho tiempo.

Edited by Pedro moreno

Share this post


Link to post
Share on other sites
  • 0

Para que quieres la autorizacion si ya tienes los tokens? Ya que tienes los tokens lo demas es hacer llamadas a la api con el token y listo no necesitas nada mas.

Y estar actualizando el token, no te compliques mucho. Con esa informacion que tienes basta, ya no hay mas pasos para autentificarte, como es localhost solo tu puedes meterte a tu plataforma local, no tiene ni sentido que tengas una sesion en tu plataforma local.

Veras intenta hacer llamadas a la api con el token, vas a empezar a obtener informacion.

Saludos

Share this post


Link to post
Share on other sites
  • 0

Muchas gracias @Fernando Aguirre en verdad eres muy bueno en el tema, agradezco mucho tu ayuda en los pequeños y grandes consejos que me has dado, ya obtengo de manera correcta el refresh_token y lo que con lleva pero con POSTMAN, ya que bueno lo estaba haciendo de manera directa en el navegador y jamás me funciono y creo que jamás me hubiera funcionado así, pero bueno ahorita estoy viendo la manera de ligar POSTMAN con mi proyecto y así trabajar para después generar un cronjob que mencionas en uno de tus POST

Saludos.

Share this post


Link to post
Share on other sites
  • 0

No te compliques mucho con lo de Postman Pedro.

Mejor crea un cronjob para estar haciendo refresh al token, va a ser mas complicado enrollarte a implementar postman, si con unas simples lineas de codigo puedes hacer refresh con php, o node o cualquier SDK que uses. Ve directamente al cron, eso te recomiendo.

 

Saludos y un gusto ayudarte!

Share this post


Link to post
Share on other sites
  • 0

Nuevamente muchas gracias por la recomendación, ya me estoy adentrando al mundo del cronjob ya que nunca lo había implementado en ningún otro proyecto, y sí, en realidad estoy utilizando el SDK de PHP, actualmente ya ingrese mis datos en la base de datos, y ya lo puedo actualizar, por ahora solo de manera manual, pero si haré lo del cronjob, en serio muchas gracias.

Saludos. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...