FedeS

Members
  • Content count

    17
  • Joined

  • Last visited

  • Days Won

    1

FedeS last won the day on February 14

FedeS had the most liked content!

About FedeS

  • Rank
    Newbie

Recent Profile Visitors

467 profile views
  1. Ya pude resolverlo. Aparentemente el error fue que cuando le di permiso a la aplicacion con la nueva cuenta lo hice a través del mismo navegador donde tenía conectada la primera cuenta (pero en modo incognito logeando con la nueva cuenta), y por alguna razón la api me daba un nuevo access para la primera cuenta, pero con el refresh de la segunda cuenta... (por eso en los dos refresh el user_id era el de la primera cuenta). Conclusión... probé darle permiso desde otro pc (por las dudas de que no sea un tema de navegador, sino de IP, sesion, o algo parecido) y luego cuando hice refresh ya me generó uno nuevo con el user_id de la segunda cuenta y funciona normalmente.
  2. Adjunto lo solicitado. Voy a tratar de volver a detallar nuevamente el problema, de la forma mas clara posible. Yo tengo una app id (digamos "123456") y una secret key (digamos "sk123ml"). Esta aplicación la tengo creada en una cuenta de meracadolibre (digamos "cuenta1") Hace varios años que utilizo la api en mi pagina web para control de stock, publicaciones, preguntas, etc... conectando mi cuenta1 con mi app 123456 y mi secret sk123ml. Hasta ahí, todo perfecto. Nunca tuve ningun problema, tengo un cron que actualiza el access token cada 5 horas, de la siguiente manera: $meli = new Meli($data['apikey'], $data['secretkey'], $data['access'], $data['refresh']); $refreshml = $meli->post("/oauth/token?grant_type=refresh_token&client_id=".$data['apikey']."&client_secret=".$data['secretkey']."&refresh_token=".$data['refresh']); $rfarray = json_decode(json_encode($refreshml['body']), true); if ($refreshml['httpCode'] == 200) { $refresh = dbquery("UPDATE ml_accounts SET access='".$rfarray['access_token']."', refresh='".$rfarray['refresh_token']."', expires='".(time() + $rfarray['expires_in'])."' WHERE id='".$data['id']."'"); } Las variables serían: $data['id'] = "1"; // es el id de la cuenta1 en mi base de datos (no es el id de la cuenta de mercadolibre) $data['apikey'] = "123456"; $data['secretkey'] = "sk123ml"; $data['access'] = "..."; // el access actual $data['refresh'] = "..."; // el refresh actual Ok, entonces como dije, hasta ahí 0 problemas. Todo funciona perfectamente hace varios años. El problema se presenta cuando yo agrego una cuenta2, para que desde la misma web se pueda manejar todo lo que sucede en ambas cuentas. Por lo tanto, busque mi primer access token desde la pagina de developers (adjunto foto) y lo cargue "manualmente" en mi base de datos. Obviamente le di acceso a la aplicación con la cuenta2 de mercadolibre, tiene los permisos necesarios para acceder a esa cuenta. Paso siguiente: fui a mi web, probe hacer varios get y post con esta cuenta nueva y todo funcionaba perfectamente. Hasta que finalmente, 5 horas despues, llego la hora de actualizar los access de ambas cuentas... La primera cuenta actualizo sus tokens con las mismas variables mas arriba, y siguio funcionando con normalidad, como siempre... La segunda cuenta actualizo sus tokens con estas variables: $data['id'] = "2"; // es el id de la cuenta2 en mi base de datos (no es el id de la cuenta de mercadolibre) $data['apikey'] = "123456"; // mismo de la cuenta1, ya que es la misma aplicacion $data['secretkey'] = "sk123ml"; // mismo de la cuenta1, ya que es la misma aplicacion $data['access'] = "..."; // el access actual de la cuenta2 $data['refresh'] = "..."; // el refresh actual de la cuenta2 Como respuesta, obtuve lo siguiente para la cuenta1 y cuenta2 respectivamente: Array ( [access_token] => APP_USR-205314098******-052302-d5ffc56f******6af7aa21f2150-96372*** [token_type] => bearer [expires_in] => 21600 [scope] => offline_access read write [user_id] => 96372*** [refresh_token] => TG-5b04df09e4b0******-96372*** ) Array ( [access_token] => APP_USR-205314098******-052302-0d9bc97fd******6999c49b6e72d3c-96372*** [token_type] => bearer [expires_in] => 21600 [scope] => offline_access read write [user_id] => 96372*** [refresh_token] => TG-5b04fc27e4b0******-96372*** ) Ok, ambas cuentas me devolvieron un nuevo access y un nuevo refresh (ambos diferentes), los actualize en mi base de datos respectivamente para cada cuenta. Ahora cuando quiero hacer un post, solo funciona la cuenta1 (la que siempre funciono) y la cuenta2 ya no funciona, es como que el access que me da es incorrecto, cuando quiero hacer un post me dice "Action not allowed" con httpCode 403. PERO, si vuelvo a generar un access en la pagina de developers y lo vuelvo a cargar "manualmente" en mi base de datos... la cuenta2 funciona perfectamente... No entiendo que estoy haciendo mal, ni cual es la diferencia de porque una cuenta funciona y la otra no con esos nuevos access generados.
  3. Alguien que me tire una mano? Lei en otros posts que tiene que estar activo el offline_access... el cual está activo en mi aplicación y puede verse tambien en el json del refresh " [scope] => offline_access read write"
  4. Buen día. Hace varios años que vengo utilizando la API y nunca tuve el problema con el que me acabo de encontrar. Todas mis aplicaciones siempre se usaron con 1 sola cuenta de MercadoLibre y nunca tuve problema obteniendo el access y el refresh. Ahora me encuentro desarrollando una "tienda" donde mas de 1 cuenta de MercadoLibre se puede conectar y utilizarla, por lo tanto cuando agregué la segunda cuenta obtuve el access token desde "http://developers.mercadolibre.com/products-authentication-authorization/" y lo utilize para iniciar a usar esta nueva cuenta en mi tienda. Hasta ahi todo bien, funcionaba perfecto... get, post, etc... Luego, generé un código el cual renueva los access tokens cada 5 horas (ya que duran 6 horas) para las dos cuentas conectadas. El problema es que cuando renueva los tokens, solo sigue funcionando el de la primera cuenta (la que siempre utilizé y donde esta creada la aplicación), y la segunda ya no funciona! cuando quiero hacer un post me dice "Action not allowed" y solo vuelve a funcionar si vuelvo a la pagina de developers y genero un nuevo access desde alli. No entiendo cual es el problema, una cuenta funciona y la otra no! ya probé de todo y no puedo encontrar la solución. Dejo aquí los arrays que se muestran cuando hago renovación de tokens para las dos cuentas. La primera sigue funcionando, la otra no... (puede tener algo que ver que en ambas me muestra el mismo user_id de la primera cuenta? porque sucede esto?) Array ( [access_token] => APP_USR-205314098******-052302-d5ffc56f******6af7aa21f2150-96372*** [token_type] => bearer [expires_in] => 21600 [scope] => offline_access read write [user_id] => 96372*** [refresh_token] => TG-5b04df09e4b0******-96372*** ) Array ( [access_token] => APP_USR-205314098******-052302-0d9bc97fd******6999c49b6e72d3c-96372*** [token_type] => bearer [expires_in] => 21600 [scope] => offline_access read write [user_id] => 96372*** [refresh_token] => TG-5b04fc27e4b0******-96372*** ) (Por seguridad oculte algunos numeros) El refresh lo hago de la siguiente manera para ambas cuentas, lo unico que cambia es el refresh de cada una. $refreshml = $meli->post("/oauth/token?grant_type=refresh_token&client_id=".$data['apikey']."&client_secret=".$data['secretkey']."&refresh_token=".$data['refresh']);
  5. Editado, encontre lo que buscaba. Perdon.
  6. Buenos días. Hay forma de obtener el costo de MercadoEnvíos obligatorio para cada item en particular a través de la API? En /items/ID no sale el costo. La unica info es esta: [tags] => Array ( [0] => mandatory_free_shipping ) Se adjunta imagen por si no se entiende cual es el costo que necesito ver a través de la API. Gracias.
  7. FedeS

    Como crear un envio personalizado desde una venta?

    Alguien pudo solucionarlo??? Tengo el mismo error y no es por tener mal el receiver_id como dicen mas arriba...
  8. Lo encontre en internet, no me di cuenta que era codigo ISO 3166-2. Gracias.
  9. Busque en los docs y en el foro, pero no encontre nada. Alguien sabe si hay una lista de los codigos de las provincias para poder identificarlas? Cuando busco la informacion de un usuario (ej: https://api.mercadolibre.com/users/202593498) me trae la siguiente información: "address": { "state": "AR-C", "city": "Palermo" } Si bien digamos que en este caso es "facil" identificar que AR-C corresponde a Capital Federal, en otras provincias no es el mismo caso, por ejemplo en Salta el codigo es AR-A, por lo tanto mi consulta es si existe una tabla de equivalencias de codigos y provincias o tengo que ir adivinando manualmente? Gracias.
  10. Obrigado Rodrigo, mas nao foi esse o problema. Eu conseguí cadastrar a variação no item colocando mais um array no variations (era só ler e entender o erro: expected List but was JSONObject) No "picture_ids" da pra colocar URL mesmo, eu tentei e deu. O code ficou assim: $item['variations'] = array( array("attribute_combinations" => array( array("id" => "83000", "value_id" => "92025") ), "available_quantity" => $mlquantity, "price" => $mlprice, "picture_ids" => $picture_ids ) );
  11. Me desculpe pela minha resposta. Mas tambem acho que ninguem tem a obrigacao de abrir o topico, pelo que eu achei a resposta do rodrigo ofensiva, eu nao fiz esse topic pra fazer todo mundo perder o seu tempo "precioso". Se ele for mesmo o maior colaborador, poderia ter me apontado pro que eu estou procurando, e nao perder o tempo dele com essa resposta. Eu procurei no forum e nao achei a resposta, por isso foi que eu perguntei, os outros topicos que eu vi nao tem a resposta. Mesmo assim, eu ja consegui fazer o que eu procurava. Obrigado.
  12. Estoy intentando publicar un item que me pide una variation obligatoria (color), pero no logro que funcione, ya intente de todo. El codigo que tengo hasta ahora es este: $item = array( "title" => utf8_encode($mltitle), "category_id" => $mlcategory, "price" => $mlprice, ... "variations" => array( "attribute_combinations" => array( "id" => 83000, "value_id" => "82049" ), "price" => $mlprice, "available_quantity" => $mlquantity, "picture_ids" => $mlimage ) ); Pero me tira este error que no logro solucionar: Array( [body] => stdClass Object ( [message] => body.invalid_field_types [error] => [invalid property type: [variations] expected List but was JSONObject value: [available_quantity:2, price:625, picture_ids:https://...jpg, attribute_combinations:[id:83000, value_id:82049]]] [status] => 400 [cause] => Array ( ) ) [httpCode] => 400)
  13. Buen dia, Desde hace un tiempo ya en MLA es posible modificar la descripcion de un item aunque tenga ventas, sin embargo no es el mismo caso con la API y me devuelve el siguiente error, ya sea para "description" o para "text". Array( [body] => stdClass Object ( [message] => Cannot update item MLA614816818 [status:active, has_bids:true] [error] => validation_error [status] => 400 [cause] => Array ( [0] => stdClass Object ( [code] => item.description.not_modifiable [message] => description is not modifiable. ) ) ) [httpCode] => 400) Por lo tanto mi consulta es si hay alguna otra forma de poder editar descripcion o texto desde la API en un item que ya tiene ventas. Gracias
  14. FedeS

    Problemas con la Descripcion de un item

    utf8_encode("texto");
  15. Obrigado Rodrigo, agora eu entendi como usa-lo.