AGL

Members
  • Content Count

    24
  • Joined

  • Last visited

Everything posted by AGL

  1. PLACASPARATVLED, mas as fotos nos produtos são obrigatórias correto? Ou você esta conseguindo enviar sem as fotos?
  2. Qualquer produto que não tem imagem (foto) da erro: "Item pictures are mandatory for listing type gold_special". Mesmo alterando o listing_type_id para gold, gold_special, gold_premium, gold_pro ele da a mensagem: "Item pictures are mandatory for listing type gold_special". Se editar o produto no sistema e incluir a foto, ele é incluído no Mercado Livre normalmente. Alguém sabe de algum link ou informativo enviado pelo Mercado Livre informando que é obrigatório foto para eu verificar e enviar para os clientes ver que agora é preciso foto em todos os anúncios? Por que até ontem estava normal. Onde mostra os requisitos das categorias? Estou consultando o link https://api.mercadolibre.com/categories/MLB1196 de uma categoria e não encontrei informação sobre a imagem ser requerida.
  3. Consegui fazer e obrigado a todos que responderam pela ajuda! Segue link https://developers.mercadolivre.com.br/pt_br/busca-de-produtos-por-vendedor para quem precisar.
  4. Hoje tive vários erros ao cadastrar produtos no Mercado Livre. Até ontem estava normal o cadastramento dos itens. Pelo que percebi entrou somente produtos que possui imagem! Alguem sabe se mudou alguma coisa? ERRO 1: {"message":"Validation error","error":"validation_error","status":400,"cause":[{"cause_id":173,"type":"error","code":"item.listing_type_id.requiresPictures","references":["item.listing_type_id","item.pictures"],"message":"Item pictures are mandatory for listing type gold_special"},{"cause_id":363,"type":"warning","code":"item.attribute.dropped","references":[],"message":"Attribute: LANGUAGE was dropped because its value_id and value_name are null, empty strings or they were not sent"},{"cause_id":363,"type":"warning","code":"item.attribute.dropped","references":[],"message":"Attribute: BOOK_EDITION was dropped because its value_id and value_name are null, empty strings or they were not sent"}]} ERRO 2: {"message":"Validation error","error":"validation_error","status":400,"cause":[{"cause_id":173,"type":"error","code":"item.listing_type_id.requiresPictures","references":["item.listing_type_id","item.pictures"],"message":"Item pictures are mandatory for listing type gold_special"},{"cause_id":363,"type":"warning","code":"item.attribute.dropped","references":[],"message":"Attribute: BOOK_EDITION was dropped because its value_id and value_name are null, empty strings or they were not sent"}]} ERRO 3: {"id":"MLB1164308844","site_id":"MLB","title":"Uma História Que Não É Contada Prof. Felipe Aquin","subtitle":null,"seller_id":293867721,"category_id":"MLB4038","official_store_id":null,"price":29,"base_price":29,"original_price":null,"currency_id":"BRL","initial_quantity":1,"available_quantity":1,"sold_quantity":0,"sale_terms":[],"buying_mode":"buy_it_now","listing_type_id":"gold_special","start_time":"2019-01-10T19:58:45.651Z","stop_time":"2039-01-05T04:00:00.000Z","end_time":"2039-01-05T04:00:00.000Z","expiration_time":"2019-03-31T19:58:45.755Z","condition":"used","permalink":"http://produto.mercadolivre.com.br/MLB-1164308844-uma-historia-que-no-e-contada-prof-felipe-aquin-_JM","pictures":[{"id":"862222-MLB29137148096_012019","url":"http://www.mercadolibre.com/jm/img?s=STC&v=O&f=proccesing_image_pt.jpg","secure_url":"https://www.mercadolibre.com/jm/img?s=STC&v=O&f=proccesing_image_pt.jpg","size":"500x500","max_size":"500x500","quality":""}],"video_id":null,"descriptions":[{"id":"MLB1164308844-1947866898"}],"accepts_mercadopago":true,"non_mercado_pago_payment_methods":[],"shipping":{"mode":"me2","local_pick_up":false,"free_shipping":false,"methods":[],"dimensions":null,"tags":[],"logistic_type":"drop_off","store_pick_up":false},"international_delivery_mode":"none","seller_address":{"id":560002680,"comment":"loja","address_line":"Rua Emiliano Perneta 424","zip_code":"80420080","city":{"id":"TUxCQ0NVUjYyZmY1","name":"Curitiba"},"state":{"id":"BR-PR","name":"Paraná"},"country":{"id":"BR","name":"Brasil"},"latitude":-25.4355046,"longitude":-49.2759197,"search_location":{"neighborhood":{"id":"TUxCQkNFTkMwRDE","name":"Centro"},"city":{"id":"TUxCQ0NVUjYyZmY1","name":"Curitiba"},"state":{"id":"TUxCUFBBUkExODBlZA","name":"Paraná"}}},"seller_contact":null,"location":{},"geolocation":{"latitude":-25.4355046,"longitude":-49.2759197},"coverage_areas":[],"attributes":[{"id":"ITEM_CONDITION","name":"Condição do item","value_id":"2230581","value_name":"Usado","value_struct":null,"attribute_group_id":"","attribute_group_name":""},{"id":"ISBN13","name":"ISBN-13","value_id":null,"value_name":"9788588158320","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"ISBN","name":"ISBN","value_id":null,"value_name":"9788588158320","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"BOOK_TITLE","name":"Título do livro","value_id":null,"value_name":"UMA HISTÓRIA QUE NÃO É CONTADA","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"AUTHOR","name":"Autor","value_id":null,"value_name":"Prof. Felipe Aquino","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"LANGUAGE","name":"Língua","value_id":"1258229","value_name":"Português","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"PUBLISHER","name":"Editora","value_id":null,"value_name":"LÉOFAS","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"BOOK_EDITION","name":"Edição","value_id":null,"value_name":"7","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"PUBLICATION_YEAR","name":"Ano de publicação","value_id":null,"value_name":"2010","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"},{"id":"FORMAT","name":"Formato","value_id":"2132698","value_name":"Papel","value_struct":null,"attribute_group_id":"OTHERS","attribute_group_name":"Outros"}],"warnings":[{"cause_id":363,"code":"item.attribute.dropped","message":"Attribute: NUMBER_OF_PAGES was dropped because its value_id and value_name are null, empty strings or they were not sent","references":[]}],"listing_source":"","variations":[],"thumbnail":"http://www.mercadolibre.com/jm/img?s=STC&v=I&f=proccesing_image_pt.jpg","secure_thumbnail":"https://www.mercadolibre.com/jm/img?s=STC&v=I&f=proccesing_image_pt.jpg","status":"active","sub_status":[],"tags":["immediate_payment"],"warranty":null,"catalog_product_id":null,"domain_id":"MLB-BOOKS","seller_custom_field":null,"parent_item_id":null,"differential_pricing":null,"deal_ids":[],"automatic_relist":false,"date_created":"2019-01-10T19:58:45.910Z","last_updated":"2019-01-10T19:58:45.910Z","health":null}
  5. Um novo cliente precisa excluir todos os produtos do Mercado Livre incluídos por um sistema anterior e que ele não possui mais acesso. Existe uma forma de pegar o código (ITEM_ID) gerado pelo Mercado Livre para que eu possa excluir todos os produtos do ML?
  6. Olá, pelo que reparei o problema é a barra invertida \ no final da URL da imagem no meu arquivo JSON . Como faço para remover essa barra invertida de todo o arquivo? Ja tentei com REPLACE(@"\", "") e não sai a barra. Utilizo C#. "{\"title\":\"PHP e MySQL Para Windows Anselmo, Fernando\",\"category_id\":\"MLB1227\",\"price\":47.74,\"currency_id\":\"BRL\",\"available_quantity\":5,\"buying_mode\":\"buy_it_now\",\"listing_type_id\":\"gold_special\",\"condition\":\"used\",\"status\":\"active\",\"description\":{\"plain_text\":\"Condição: USADO \\n Assunto: Informatica \\n Acabamento: Brochura \\n Dimensões: 16 x 23 cm \\n Peso: 500 \\n Código Produto: 19938450 \\n Código Barras: 1000199384508 \\n ISBN: 97885608491207 \\n Descrição: Livro em Bom Estado de Conservação!\\r\\nAlgumas paginas com carimbo. Sem furos, riscos, rasuras, grifos, manchas, dedicatória ou assinatura.\"},\"shipping\":{\"mode\":\"me2\",\"local_pick_up\":false,\"free_shipping\":false},\"tags\":[\"immediate_payment\"],\"attributes\":[{\"id\":\"BOOK_TITLE\",\"name\":\"Título do livro\",\"value_id\":null,\"value_name\":\"PHP e MySQL Para Windows\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"AUTHOR\",\"name\":\"Autor\",\"value_id\":null,\"value_name\":\"Anselmo, Fernando\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"LANGUAGE\",\"name\":\"Língua\",\"value_id\":null,\"value_name\":\"Português\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"PUBLISHER\",\"name\":\"Editorial\",\"value_id\":null,\"value_name\":\"Visual Books\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"BOOK_EDITION\",\"name\":\"Edição\",\"value_id\":null,\"value_name\":\"\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"PUBLICATION_YEAR\",\"name\":\"Ano de publicação\",\"value_id\":null,\"value_name\":\"2000\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"NUMBER_OF_PAGES\",\"name\":\"Páginas\",\"value_id\":null,\"value_name\":\"144\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"ISBN\",\"name\":\"ISBN\",\"value_id\":null,\"value_name\":\"97885608491207\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"ISBN13\",\"name\":\"ISBN13\",\"value_id\":null,\"value_name\":\"97885608491207\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"EAN\",\"name\":\"EAN\",\"value_id\":null,\"value_name\":\"\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"FORMAT\",\"name\":\"Formato\",\"value_id\":null,\"value_name\":\"Papel\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"}],\"pictures\":[{\"id\":\"19938450_1_745\",\"source\":\"https://www.sebosonline.com.br/web2commerce/static/capas/199384501_16012018093916.jpg\"}]}"
  7. Olá, obrigado pela resposta. É o que estou fazendo acima, conforme escrevi na primeira mensagem, porem fica a imagem de PROCESSANDO IMAGEM no Mercado Livre.
  8. Boa noite, peço desculpas. Estava lendo a documentação https://developers.mercadolibre.com/pt_br/trabalho-com-imagens como monto a url para envio sendo que a imagem se encontra nesse endereço: https://www.sebosonline.com.br/web2commerce/static/capas/199384501_16012018093916.jpg curl -F file=@/home/user/picture.jpg https://api.mercadolibre.com/pictures?access_token=$ACCESS_TOKEN Seria assim: https://api.mercadolibre.com/pictures/file=@https://www.sebosonline.com.br/web2commerce/static/capas/199384501_16012018093916.jpg ?access_token=$ACCESS_TOKEN
  9. Olá, utilizo o JSON abaixo para envio do produto, porem, mesmo com o link da imagem informado no arquivo abaixo o produto fica com a imagem PROCESSANDO IMAGEM conforme link https://produto.mercadolivre.com.br/MLB-1108609256-php-e-mysql-para-windows-anselmo-fernando-_JM do produto no ML. O que estou fazendo de errado? "{\"title\":\"PHP e MySQL Para Windows Anselmo, Fernando\",\"category_id\":\"MLB1227\",\"price\":47.74,\"currency_id\":\"BRL\",\"available_quantity\":5,\"buying_mode\":\"buy_it_now\",\"listing_type_id\":\"gold_special\",\"condition\":\"used\",\"status\":\"active\",\"description\":{\"plain_text\":\"Condição: USADO \\n Assunto: Informatica \\n Acabamento: Brochura \\n Dimensões: 16 x 23 cm \\n Peso: 500 \\n Código Produto: 19938450 \\n Código Barras: 1000199384508 \\n ISBN: 97885608491207 \\n Descrição: Livro em Bom Estado de Conservação!\\r\\nAlgumas paginas com carimbo. Sem furos, riscos, rasuras, grifos, manchas, dedicatória ou assinatura.\"},\"shipping\":{\"mode\":\"me2\",\"local_pick_up\":false,\"free_shipping\":false},\"tags\":[\"immediate_payment\"],\"attributes\":[{\"id\":\"BOOK_TITLE\",\"name\":\"Título do livro\",\"value_id\":null,\"value_name\":\"PHP e MySQL Para Windows\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"AUTHOR\",\"name\":\"Autor\",\"value_id\":null,\"value_name\":\"Anselmo, Fernando\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"LANGUAGE\",\"name\":\"Língua\",\"value_id\":null,\"value_name\":\"Português\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"PUBLISHER\",\"name\":\"Editorial\",\"value_id\":null,\"value_name\":\"Visual Books\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"BOOK_EDITION\",\"name\":\"Edição\",\"value_id\":null,\"value_name\":\"\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"PUBLICATION_YEAR\",\"name\":\"Ano de publicação\",\"value_id\":null,\"value_name\":\"2000\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"NUMBER_OF_PAGES\",\"name\":\"Páginas\",\"value_id\":null,\"value_name\":\"144\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"ISBN\",\"name\":\"ISBN\",\"value_id\":null,\"value_name\":\"97885608491207\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"ISBN13\",\"name\":\"ISBN13\",\"value_id\":null,\"value_name\":\"97885608491207\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"EAN\",\"name\":\"EAN\",\"value_id\":null,\"value_name\":\"\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"},{\"id\":\"FORMAT\",\"name\":\"Formato\",\"value_id\":null,\"value_name\":\"Papel\",\"value_struct\":null,\"attribute_group_id\":\"OTHERS\",\"attribute_group_name\":\"Outros\"}],\"pictures\":[{\"id\":\"19938450_1_745\",\"source\":\"https://www.sebosonline.com.br/web2commerce/static/capas/199384501_16012018093916.jpg\"}]}"
  10. Encontrei a documentação https://developers.mercadolibre.com/pt-br/produto-sincronizacao-de-publicacoes/#Exclusão-de-publicações aqui no fórum. Primeiro envio o JSON {"status": "closed"} e depois o {"deleted": "true"} ambos com o metodo PUT correto? Não utiliza o DELETE é somente PUT?
  11. Estou tentando excluir produto no Mercado Livre, porem estou tendo esse erro:
  12. Mais, uma vez obrigado a todos.
  13. Tenho alguns clientes que possui cerca de 70 mil itens na loja. Como proceder nesse caso?! Vai mandando produto por produto e pegando o retorno?
  14. Boa tarde, consegui incluir os produtos no Mercado Livre. Quero agradecer a todos pela ajuda e paciência. Somente uma duvida, procurei e não localizei, qual o tamanho máximo do arquivo JSON para envio? Até quantos produtos posso incluir no arquivo?
  15. Boa tarde, estou utilizando o arquivo em anexo mas esta dando erro. Veja na imagem como o JSON fica com varias contra barras. Pego o conteudo do arquivo JSON com o codigo abaixo: JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); using (StreamReader r1 = new StreamReader(@"C:\Backup\json_ml1.json")) { string json = r1.ReadToEnd(); dynamic array1 = serializer.Serialize(json); var ps = new List<Parameter>(); ps.Add(p); IRestResponse r = m.Post("/items", ps, new { array1 }); } json_ml1.json
  16. Estou fazendo da forma recomendada, porem esta vindo mensagem de que falta alguns campos no arquivo JSON, mas, ja conferi e os campos estão no arquivo. json_ml1.json
  17. Habilitei sim! A grande duvida é: 1) Como redireciono meu cliente para a URL da string redirectUrl para o mesmo informar seu E-MAIL e SENHA do Mercado Livre para autorizar meu aplicativo?! 2) Após o cliente autorizar, como pego o código (CODE) de retorno TG-5b58c3a1e4b0fc...... para prosseguir com a autorização?!
  18. Nathalie, mas como? Para mim não retorna nada. O que to fazendo de errado?
  19. Nathalie, é o mesmo problema que estou enfrentando. Manualmente também consegui fazer da mesma forma, o problema é via código C#.
  20. Boa tarde, alguém tem um exemplo de cadastro de produto no ML em C# para compartilhar? Onde incluir o arquivo JSON (em anexo) no código abaixo? var p = new Parameter (); p.Name = "access_token"; p.Value = m.AccessToken; var ps = new List<Parameter> (); ps.Add (p); IRestResponse r = m.Post ("/items", ps, new {foo="bar"}); json_ml.json
  21. Minha aplicação não é WEB ela é Desktop (Windows Forms) em C#. Portanto como fazer para usuário efetuar a autorização do meu aplicativo (redirecionar o usuário e pegar o retorno)? Como executar a URl obtida na string redirectUrl (string redirectUrl = m.GetAuthUrl(Meli.AuthUrls.MLB, "https://www.meusite.com.br");) abrir a pagina do Mercado Livre para o usuário informar o E-MAIL e SENHA de acesso, clicar sobre o botão PERMITIR dentro da tela do ML e depois pegar o código TG-5bXXXe2ee4b0b1178dfefe31-XXXXXXXXX de retorno para ai sim partir para a função Authorize e obter o AccessToken, RefreshToken e ExperiIn?
  22. A minha conta de cliente (vendedor no ML) que estou utilizando para teste não esta logada. Veja o codigo de chamada: static void Main() { Meli m = new Meli(clientId, "clientSecret"); //coloquei clientId e clientSecret para omitir os códigos, mas, na minha aplicação eles foram incluídos. string redirectUrl = m.GetAuthUrl(Meli.AuthUrls.MLB, "https://www.google.com"); pelo que reparei, o problema esta entre essas duas linhas (acima e abaixo), o que falta é o código que pega o retorno da autorização do usuario no ML e retorne aquele codigo TG-5bXXXe2ee4b0b1178dfefe31-XXXXXXXXX como pego este codigo e coloco no m.Authorize("TG-5bXXXe2ee4b0b1178dfefe31-XXXXXXXXX ", "https://www.google.com"); m.Authorize("", "https://www.google.com"); } E abaixo o MELI.CS o que estou fazendo de errado? using System; using System.Web; using System.Net; using System.IO; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Collections.Specialized; using RestSharp; using System.Collections.Generic; namespace MercadoLibre.SDK { public class Meli { private RestClient client = new RestClient (ApiUrl); static private string apiUrl = "https://api.mercadolibre.com"; static private string sdkVersion = "MELI-NET-SDK-1.0.2"; static public string ApiUrl { get { return apiUrl; } set { apiUrl = value; } } public static class AuthUrls { public static string MLA { get { return "https://auth.mercadolibre.com.ar"; } } //Argentina public static string MLB { get { return "https://auth.mercadolivre.com.br"; } } // Brasil public static string MCO { get { return "https://auth.mercadolibre.com.co"; } } // Colombia public static string MCR { get { return "https://auth.mercadolibre.com.cr"; } } // Costa Rica public static string MEC { get { return "https://auth.mercadolibre.com.ec"; } } // Ecuador public static string MLC { get { return "https://auth.mercadolibre.cl"; } } // Chile public static string MLM { get { return "https://auth.mercadolibre.com.mx"; } } // Mexico public static string MLU { get { return "https://auth.mercadolibre.com.uy"; } } // Uruguay public static string MLV { get { return "https://auth.mercadolibre.com.ve"; } } // Venezuela public static string MPA { get { return "https://auth.mercadolibre.com.pa"; } } // Panama public static string MPE { get { return "https://auth.mercadolibre.com.pe"; } } // Peru public static string MPT { get { return "https://auth.mercadolibre.com.pt"; } } // Portugal public static string MRD { get { return "https://auth.mercadolibre.com.do"; } } // Dominicana } public string ClientSecret { get; private set; } public long ClientId { get; private set; } public string AccessToken { get; private set; } public string RefreshToken { get; private set; } /** News **/ public long ExperiIn { get; private set; } public string Scope { get; private set; } public string UserId { get; private set; } public string TokenType { get; private set; } public Meli (long clientId, string clientSecret) { this.ClientId = clientId; this.ClientSecret = clientSecret; } public Meli (long clientId, string clientSecret, string accessToken) { this.ClientId = clientId; this.ClientSecret = clientSecret; this.AccessToken = accessToken; } public Meli (long clientId, string clientSecret, string accessToken, string refreshToken) { this.ClientId = clientId; this.ClientSecret = clientSecret; this.AccessToken = accessToken; this.RefreshToken = refreshToken; } public string GetAuthUrl (string authUrl , string redirectUri) { return authUrl+"/authorization?response_type=code&client_id=" + ClientId + "&redirect_uri=" + HttpUtility.UrlEncode (redirectUri); } public void Authorize (string code, string redirectUri) { var request = new RestRequest ("/oauth/token?grant_type=authorization_code&client_id={client_id}&client_secret={client_secret}&code={code}&redirect_uri={redirect_uri}", Method.POST); request.AddParameter ("client_id", this.ClientId, ParameterType.UrlSegment); request.AddParameter ("client_secret", this.ClientSecret, ParameterType.UrlSegment); request.AddParameter ("code", code, ParameterType.UrlSegment); request.AddParameter ("redirect_uri", redirectUri, ParameterType.UrlSegment); request.AddHeader ("Accept", "application/json"); var response = ExecuteRequest (request); if (response.StatusCode.Equals (HttpStatusCode.OK)) { var token = JsonConvert.DeserializeAnonymousType (response.Content, new {refresh_token="", access_token = "", expires_in = 0, user_id = "", scope = "", token_type = ""}); this.AccessToken = token.access_token; this.RefreshToken = token.refresh_token; this.ExperiIn = Convert.ToInt64(token.expires_in); this.Scope = token.scope; this.UserId = token.user_id; this.TokenType = token.token_type; } else { throw new AuthorizationException (); } } public IRestResponse Get (string resource) { return Get (resource, new List<Parameter> ()); } public void refreshToken () { var request = new RestRequest ("/oauth/token?grant_type=refresh_token&client_id={client_id}&client_secret={client_secret}&refresh_token={refresh_token}", Method.POST); request.AddParameter ("client_id", this.ClientId, ParameterType.UrlSegment); request.AddParameter ("client_secret", this.ClientSecret, ParameterType.UrlSegment); request.AddParameter ("refresh_token", this.RefreshToken, ParameterType.UrlSegment); request.AddHeader ("Accept", "application/json"); var response = ExecuteRequest (request); if (response.StatusCode.Equals (HttpStatusCode.OK)) { var token = JsonConvert.DeserializeAnonymousType (response.Content, new {refresh_token="", access_token = "", expires_in = 0, user_id = "", scope = "", token_type = ""}); this.AccessToken = token.access_token; this.RefreshToken = token.refresh_token; this.ExperiIn = Convert.ToInt64(token.expires_in); this.Scope = token.scope; this.UserId = token.user_id; this.TokenType = token.token_type; } else { throw new AuthorizationException (); } } public void refreshToken(string refresh_token ) { var request = new RestRequest("/oauth/token?grant_type=refresh_token&client_id={client_id}&client_secret={client_secret}&refresh_token={refresh_token}", Method.POST); request.AddParameter("client_id", this.ClientId, ParameterType.UrlSegment); request.AddParameter("client_secret", this.ClientSecret, ParameterType.UrlSegment); request.AddParameter("refresh_token", refresh_token, ParameterType.UrlSegment); request.AddHeader("Accept", "application/json"); var response = ExecuteRequest(request); if (response.StatusCode.Equals(HttpStatusCode.OK)) { var token = JsonConvert.DeserializeAnonymousType(response.Content, new { refresh_token = "", access_token = "", expires_in = 0, user_id = "", scope = "", token_type = "" }); this.AccessToken = token.access_token; this.RefreshToken = token.refresh_token; this.ExperiIn = Convert.ToInt64(token.expires_in); this.Scope = token.scope; this.UserId = token.user_id; this.TokenType = token.token_type; } else { throw new AuthorizationException(); } } public IRestResponse Get (string resource, List<Parameter> param) { bool containsAT = false; var request = new RestRequest (resource, Method.GET); List<string> names = new List<string> (); foreach (Parameter p in param) { names.Add (p.Name + "={" + p.Name + "}"); if (p.Name.Equals ("access_token")) { containsAT = true; } p.Type = ParameterType.UrlSegment; request.AddParameter (p); } request.Resource = resource + "?" + String.Join ("&", names.ToArray ()); request.AddHeader ("Accept", "application/json"); var response = ExecuteRequest (request); return response; } public IRestResponse Post (string resource, List<Parameter> param, object body) { bool containsAT = false; var request = new RestRequest (resource, Method.POST); List<string> names = new List<string> (); foreach (Parameter p in param) { names.Add (p.Name + "={" + p.Name + "}"); if (p.Name.Equals ("access_token")) { containsAT = true; } p.Type = ParameterType.UrlSegment; request.AddParameter (p); } request.Resource = resource + "?" + String.Join ("&", names.ToArray ()); request.AddHeader ("Accept", "application/json"); request.AddHeader ("Content-Type", "application/json"); request.RequestFormat = DataFormat.Json; request.AddBody (body); var response = ExecuteRequest (request); return response; } public IRestResponse Put (string resource, List<Parameter> param, object body) { bool containsAT = false; var request = new RestRequest (resource, Method.PUT); List<string> names = new List<string> (); foreach (Parameter p in param) { names.Add (p.Name + "={" + p.Name + "}"); if (p.Name.Equals ("access_token")) { containsAT = true; } p.Type = ParameterType.UrlSegment; request.AddParameter (p); } request.Resource = resource + "?" + String.Join ("&", names.ToArray ()); request.AddHeader ("Accept", "application/json"); request.AddHeader ("Content-Type", "application/json"); request.RequestFormat = DataFormat.Json; request.AddBody (body); var response = ExecuteRequest (request); return response; } public IRestResponse Delete (string resource, List<Parameter> param) { bool containsAT = false; var request = new RestRequest (resource, Method.DELETE); List<string> names = new List<string> (); foreach (Parameter p in param) { names.Add (p.Name + "={" + p.Name + "}"); if (p.Name.Equals ("access_token")) { containsAT = true; } p.Type = ParameterType.UrlSegment; request.AddParameter (p); } request.Resource = resource + "?" + String.Join ("&", names.ToArray ()); request.AddHeader ("Accept", "application/json"); var response = ExecuteRequest (request); return response; } public IRestResponse ExecuteRequest(RestRequest request) { client.UserAgent = sdkVersion; return client.Execute(request); } } }
  23. Correto, estou utilizando outro endereço, que possui certificado HTTPS e esta configurada (informada) no gerenciador de aplicativos do Mercado Livre. Quando executo o código abaixo esta dando esse erro da imagem anexa: static void Main() { Meli m = new Meli(clientId, "clientSecret"); //coloquei clientId e clientSecret para omitir os códigos, mas, na minha aplicação eles foram incluídos. string redirectUrl = m.GetAuthUrl(Meli.AuthUrls.MLB, "https://www.google.com"); m.Authorize("", "https://www.google.com"); }
  24. Olá, estou utilizando os exemplos do endereço https://github.com/mercadolibre/net-sdk porem estou tendo erro (veja imagem em anexo) na autenticação abaixo: static void Main() { Meli m = new Meli(clientId, "clientSecret"); //coloquei clientId e clientSecret para omitir os códigos, mas, na minha aplicação eles foram incluídos. string redirectUrl = m.GetAuthUrl(Meli.AuthUrls.MLB, "https://www.google.com"); m.Authorize("", "https://www.google.com"); } Estou lendo principalmente essa parte https://developers.mercadolibre.com/pt_br/server-side mas ainda não consegui entender como fazer para aparecer a autenticação, ou seja aparecer a tela onde o usuário informa o e-mail e senha do ML para autorizar minha aplicação. Se informo a URL https://auth.mercadolivre.com.br/authorization?response_type=code&client_id=34029XXXXXXX8860 (substitui parte do código por X) direto no navegador ele mostra a tela do ML para o usuário efetuar a permissão. Mas, não sei como isso isso e pegar o retorno via código C#. O problema pelo que vejo esta nessa linha m.Authorize("", "https://www.google.com"); (coloquei o endereço do Google mas utilizo outro endereço ja cadastrado no gerenciador de aplicação do ML) que chama a função abaixo: public void Authorize (string code, string redirectUri) { var request = new RestRequest ("/oauth/token?grant_type=authorization_code&client_id={client_id}&client_secret={client_secret}&code={code}&redirect_uri={redirect_uri}", Method.POST); request.AddParameter ("client_id", this.ClientId, ParameterType.UrlSegment); request.AddParameter ("client_secret", this.ClientSecret, ParameterType.UrlSegment); request.AddParameter ("code", code, ParameterType.UrlSegment); request.AddParameter ("redirect_uri", redirectUri, ParameterType.UrlSegment); request.AddHeader ("Accept", "application/json"); var response = ExecuteRequest (request); if (response.StatusCode.Equals (HttpStatusCode.OK)) { var token = JsonConvert.DeserializeAnonymousType (response.Content, new {refresh_token="", access_token = "", expires_in = 0, user_id = "", scope = "", token_type = ""}); this.AccessToken = token.access_token; this.RefreshToken = token.refresh_token; this.ExperiIn = Convert.ToInt64(token.expires_in); this.Scope = token.scope; this.UserId = token.user_id; this.TokenType = token.token_type; } else { throw new AuthorizationException (); } }