Conseguir Token API Brawl Stars y Consumir API
Registrarnos en la API para conseguir el TOKEN
Nos registramos en la api, nos dirigimos a nuestra cuenta y le damos a la opción de crear KEY, en la que nos pedirá que metamos nombre, descripción y nuestra IP https://developer.brawlstars.com/#/. Una vez creada la KEY entramos y tenemos el TOKEN lo copiamos y nos lo guardamos para insertarlo en el codigo.
En nuestro proyecto hacemos la petición de AUTHORIZATION
string enlaceJugadores = "https://api.brawlstars.com/v1/players/%23";
HttpClient cliente = new HttpClient();
cliente.DefaultRequestHeaders.Add("accept", "application/json");
//Importante el BEARER antes del TOKEN
cliente.DefaultRequestHeaders.Add("authorization", "Bearer TOKEN";
try
{
var playerresponse = await cliente.GetStringAsync(enlaceJugadores + idjugador);
JObject json = JObject.Parse(playerresponse);
json.Values().AsEnumerable().ToList();
return true;
}
catch(Exception ex)
{
return false;
}
return true;
Consumimos la API para conseguir la información del Usuario por su TAG
public async Task<JObject> InfoUsuarioXTag(string tag)
{
JObject jsondevolver;
HttpClient cliente = new HttpClient();
cliente.DefaultRequestHeaders.Add("accept", "application/json");
cliente.DefaultRequestHeaders.Add("authorization", "Bearer TOKEN");
string enlaceSolicitud = $"{enlaceJugadores}{tag}";
try
{
var playerresponse = await cliente.GetStringAsync(enlaceSolicitud);
jsondevolver = JObject.Parse(playerresponse);
}
catch (Exception ex)
{
jsondevolver = new JObject();
}
return jsondevolver;
}
En el Registro validamos si existe o no el usuario
Si existe el registro se completa, si no te manda mensaje de error porque no existe el usuario con ese TAG.
if(await helper.TokenApi(usuariotag) == false)
{
ViewData["ERROR"] = "Error no existe el usuario";
}
else
{
this.repo.InsertarUsuario(usuariotag, nombre, email, contrasenia);
}
Añadimos la información de la API a nuestro objeto PERFIL
Para ver los datos del usuario, creamos un modelo Perfil en el que tendrá los campos que queramos recoger de la api y se lo añadimos de la siguiente forma:
public async Task<IActionResult> PerfilUsuario()
{
Perfil perf = new Perfil();
User usu = HttpContext.Session.GetObject<User>("USUARIO");
if (usu != null)
{
JObject jsonusu = await this.helper.InfoUsuarioXTag(usu.UsuarioTag);
perf.Tag = jsonusu.Values().AsEnumerable().ToList().Where(x => x.Path == "tag" && x.Type.ToString() == "String").FirstOrDefault().ToString();
perf.Nombre = jsonusu.Values().AsEnumerable().ToList().Where(x => x.Path == "name").FirstOrDefault().ToString();
perf.Trofeos = int.Parse(jsonusu.Values().AsEnumerable().ToList().Where(x => x.Path == "trophies").FirstOrDefault().ToString());
perf.MaximoTr = int.Parse(jsonusu.Values().AsEnumerable().ToList().Where(x => x.Path == "highestTrophies").FirstOrDefault().ToString());
perf.VictoriasTotales = int.Parse(jsonusu.Values().AsEnumerable().ToList().Where(x => x.Path == "3vs3Victories").FirstOrDefault().ToString())
+ int.Parse(jsonusu.Values().AsEnumerable().ToList().Where(x => x.Path == "soloVictories").FirstOrDefault().ToString())
+ int.Parse(jsonusu.Values().AsEnumerable().ToList().Where(x => x.Path == "duoVictories").FirstOrDefault().ToString());
return View(perf);
}
else
{
return RedirectToAction("InicioPagina", "LoginUsuario");
}
}
Y ya por ultimo mostrar los datos en la vista que creamos llamada Perfil
@model Perfil
<div style="position: relative;">
<div class="card" style="width: 18rem; background-color:#242424;position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); margin-top:350px">
<img src="https://static.brawler.gg/images/portraits/shelly-portrait.3be52d59c3.png" class="card-img-top" alt="...">
<div class="card-body">
<h4 class="card-title">@Model.Nombre</h4>
<h5 class="card-title">Tag: @Model.Tag</h5>
<p class="card-text">Total Trofeos: @Model.Trofeos</p>
<p class="card-text">Maximo Trofeos: @Model.MaximoTr</p>
<p class="card-text">Victorias Totales: @Model.VictoriasTotales</p>
</div>
</div>
</div>