Код: Выделить всё
builder.Services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.ClientId = builder.Configuration["Authentication:Microsoft:ClientId"];
microsoftOptions.ClientSecret = builder.Configuration["Authentication:Microsoft:ClientSecret"];
microsoftOptions.CallbackPath = "/User/Microsoft/Auth/Callback";
microsoftOptions.AuthorizationEndpoint = "https://login.live.com/oauth20_authorize.srf";
microsoftOptions.TokenEndpoint = "https://login.live.com/oauth20_token.srf";
microsoftOptions.Scope.Clear();
microsoftOptions.Scope.Add("email");
microsoftOptions.Scope.Add("openid");
microsoftOptions.Scope.Add("profile");
microsoftOptions.Scope.Add("User.Read");
microsoftOptions.Scope.Add("XboxLive.signin");
microsoftOptions.SaveTokens = true;
});
< /code>
Из кнопки входа в систему выполняется ниже. (поставщик - Microsoft Код: Выделить всё
var redirectUrl = Url.Page("./ExternalLogin", pageHandler: "Callback", values: new { returnUrl });
var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
_logger.LogInformation("Redirecting to {Provider} for external login. Callback: {RedirectUrl}", provider, redirectUrl);
return new ChallengeResult(provider, properties);
Код: Выделить всё
var props = new AuthenticationProperties();
props.StoreTokens(info.AuthenticationTokens); // Store tokens from Microsoft login
props.IsPersistent = false;
await _signInManager.SignInAsync(user, props, info.LoginProvider); // Use the specific external login provider scheme
< /code>
Вот где возникает проблема (и я не уверен, почему) имейте в виду, я пробовал много разных форматов анализа этого, это только последний, который я попробовал. < /p>
var microsoftAccessToken = await HttpContext.GetTokenAsync("Microsoft", "access_token");
var client = _httpClientFactory.CreateClient("XboxApiClient");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var xasuRequest = new
{
Properties = new { AuthMethod = "RPS", SiteName = "user.auth.xboxlive.com", RpsTicket = $"d={microsoftAccessToken}" },
RelyingParty = "http://auth.xboxlive.com",
TokenType = "JWT"
};
var serializerOptions = new JsonSerializerOptions
{
PropertyNamingPolicy = null
};
HttpResponseMessage xasuResponseMsg = await client.PostAsJsonAsync(
"https://user.auth.xboxlive.com/user/authenticate",
xasuRequest,
serializerOptions
);
< /code>
xasuResponseMsgЛюбая помощь в этом была бы очень оценена. /> Я обнаружил, что когда я делаю весь процесс вручную, используя почтальон или аналогичный, он работает нормально. Таким образом, проблема должна лежать где -то в рамках работы Microsoft Account Account Account Setup.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... h-net-core