none
[classe] Exemplo de Login no CartolaFC e Consumo de EndPoint da API [ano: 2019] RRS feed

  • Discussão Geral

  • Para aqueles que tem interesse em desenvolver algo baseado nos dados da API do CartolaFC, segue um  exemplo prático e funcional da requisição de login na API, armazenando o Token de retorno e também um exemplo de como fazer a requisição dos demais endpoints passando esse token que foi retornado.
    Espero que ajude vocês.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Web.Script.Serialization;

    /* classe com propriedades de retorno da solicitação de login */
        public class cartolafc
        {
            public string id { get; set; }
            public string userMessage { get; set; }
            public string glbId { get; set; }
        }
        
                #region variaveis
                /* objeto generico com os headers */
                var HeadersHttp = new
                {
                    ContentType = "Content-Type",
                    ContentValue = "application/json",
                    UserAgent = "User-Agent",
                    UserAgetValue = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
                    TokenGlb = "X-GLB-Token"
                };
                /* url com endpoints */
                var UrlApiCFC = "https://api.cartolafc.globo.com";
                /* url para login */
                var UrlApiLogin = "https://login.globo.com/api/authentication";
                /* objeto com os dados de retorno do login */
                var retorno_acesso = new cartolafc();
                /* objeto que será enviado solicitando o token de autorização de acesso */
                var credenciais_acesso = new { payload = new { email = "aquiseu@email.com", password = "aquisuasenha", serviceId = 4728 } };
                #endregion

                try
                {
                    /* envia usuario e senha de acesso e recebe o token de autorização */
                    using (var wc = new WebClient() { Encoding = Encoding.UTF8 })
                    {
                        wc.Headers.Add(HeadersHttp.ContentType, HeadersHttp.ContentValue);
                        wc.Headers.Add(HeadersHttp.UserAgent, HeadersHttp.UserAgetValue);

                        /* objeto retorno_acesso receberá o retorno da requisição de login */
                        retorno_acesso = new JavaScriptSerializer().Deserialize<cartolafc>(wc.UploadString(UrlApiLogin, "POST", new JavaScriptSerializer().Serialize(credenciais_acesso)));
                    }

                    if (retorno_acesso.id.Equals("Authenticated"))
                    {
                        var jsResult = string.Empty;
                        using (var wc = new WebClient() { Encoding = Encoding.UTF8 })
                        {
                            wc.Headers.Add(HeadersHttp.ContentType, HeadersHttp.ContentValue);
                            wc.Headers.Add(HeadersHttp.UserAgent, HeadersHttp.UserAgetValue);
                            wc.Headers.Add(HeadersHttp.TokenGlb, retorno_acesso.glbId);
                            jsResult = wc.DownloadString(string.Concat(UrlApiCFC, "/auth/time"));
                        }
                    }
                    else
                    {
                        Console.WriteLine(retorno_acesso.userMessage);
                    }
                }
                catch (WebException wex)
                {
                    if (wex.Status == WebExceptionStatus.ProtocolError)
                    {
                        Console.WriteLine(wex.Message);
                    }
                }   



    terça-feira, 30 de abril de 2019 15:17