Startup:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "GitHub";
})
.AddCookie()
.AddOAuth("GitHub", options =>
{
options.ClientId = Configuration["GitHub:ClientId"];
options.ClientSecret = Configuration["GitHub:ClientSecret"];
options.CallbackPath = new PathString("/api/Account/SignInGithub");
options.AuthorizationEndpoint = "https://github.com/login/oauth/authorize";
options.TokenEndpoint = "https://github.com/login/oauth/access_token";
options.UserInformationEndpoint = "https://api.github.com/user";
options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
options.ClaimActions.MapJsonKey(ClaimTypes.Name, "name");
options.ClaimActions.MapJsonKey("urn:github:login", "login");
options.ClaimActions.MapJsonKey("urn:github:url", "html_url");
options.ClaimActions.MapJsonKey("urn:github:avatar", "avatar_url");
options.Events = new OAuthEvents
{
OnCreatingTicket = async context =>
{
var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
response.EnsureSuccessStatusCode();
var user = JObject.Parse(await response.Content.ReadAsStringAsync());
context.RunClaimActions(user);
return;
}
};
});
Выбираю провайдер:
[HttpGet("api/[controller]/Login/{provider?}")]
public async Task<IActionResult> Login(string provider = "GitHub")
{
return Challenge(provider);
}
Коллбек:
[HttpGet("api/Account/SignInGithub")]
public async Task<IActionResult> SignInGithub2(string code)
{
return Ok();
}
Настройке в гите:
Как щас
Исходник на всякий
Вопросы:
1) Почему после того как подтвердил свой логин в гите не происходит редирект? 2) Пробуем получить колбек с постмена и видим ошибку касающуюся поля state, почему:
3) В startup.cs
есть event OnCreatingTicket
в нем user
определяется верно. Как мне его записать в БД?
monogame Отсутствует подтип проектаПодтип "{6D335F3A-9D43-41b4-9D22-F6F17C4BE596}" не поддерживается в этой копии программы
Из ViewModel оформлена подписка на события класса C1В классе C1 запущен асинхронный метод, в процессе работы которого генерируются события
у меня есть проблема с игрой на UnityЯ решил сделать небольшую игру типа платформера, есть проблема с прыжком, если очень много раз нажимать...
Нашёл ответ на свой вопрос, вродь) Вот https://stackoverflowcom/questions/1297264/using-custom-fonts-on-a-label-on-winforms