63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Headers;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNet.Mvc;
|
|
|
|
namespace testOauthClient.Controllers
|
|
{
|
|
public class HomeController : Controller
|
|
{
|
|
[HttpGet]
|
|
public IActionResult Index()
|
|
{
|
|
return View();
|
|
}
|
|
[HttpPost]
|
|
public async Task<IActionResult> GetUserInfo(CancellationToken cancellationToken)
|
|
{
|
|
using (var client = new HttpClient()) {
|
|
var request = new HttpRequestMessage(HttpMethod.Get, "http://dev.pschneider.fr/api/me");
|
|
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken);
|
|
|
|
var response = await client.SendAsync(request, cancellationToken);
|
|
response.EnsureSuccessStatusCode();
|
|
|
|
return View("Index", model: await response.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
}
|
|
protected string AccessToken {
|
|
get {
|
|
var claim = HttpContext.User?.FindFirst("access_token");
|
|
if (claim == null) {
|
|
throw new InvalidOperationException("no access_token");
|
|
}
|
|
|
|
return claim.Value;
|
|
}
|
|
}
|
|
public IActionResult About()
|
|
{
|
|
ViewData["Message"] = "Your application description page.";
|
|
|
|
return View();
|
|
}
|
|
|
|
public IActionResult Contact()
|
|
{
|
|
ViewData["Message"] = "Your contact page.";
|
|
|
|
return View();
|
|
}
|
|
|
|
public IActionResult Error()
|
|
{
|
|
return View();
|
|
}
|
|
}
|
|
}
|