В соответствии с документацией Я реализовал часть протокола oauth2
Первая часть, чтобы получить согласие диалога.
[HttpPost("login")]
public async void GoogleLogin()
{
try
{
_logger.LogInformation("Hello");
const string state = "1234567890";
var client = new RestClient("https://accounts.google.com/.well-known/openid-configuration");
var request = new RestRequest(Method.GET);
var uri = await client.ExecuteGetTaskAsync(request);
if (!uri.IsSuccessful)
{
_logger.LogError("Try to get well-known resource");
}
Console.WriteLine($"Kid: {state}");
var json = JsonConvert.DeserializeObject<OpenIdConfiguration>(uri.Content);
var client2 = new RestClient(json.AuthorizationEndpoint);
var request2 = new RestRequest(Method.GET);
request2.AddQueryParameter("client_id", Environments.GoogleAuthenticationClientId);
request2.AddQueryParameter("response_type", "code");
request2.AddQueryParameter("scope",
string.Join(",", new List<string> {SheetsService.Scope.Spreadsheets}.ToArray()));
request2.AddQueryParameter("redirect_uri", "http://localhost:5000/api/auth/authorize");
request2.AddCookie("state", state);
var uri2 = await client2.ExecuteGetTaskAsync(request2);
if (!uri2.IsSuccessful)
{
_logger.LogError("Try to auth");
}
Redirect(uri2.ResponseUri.AbsoluteUri); // try to do it in that way but don't get the expected result
}
catch (Exception ex)
{
_logger.LogError(ex.Message);
}
}
В конце концов, пользователь имеетчтобы подтвердить согласие Google, для этого должно быть показано диалоговое окно согласия
Когда сервер получает ответ об успешной авторизации от Google, каким-то образом должен быть показан диалог,это способ сделать это на python
esponse = make_response(
render_template('index.html',
CLIENT_ID=CLIENT_ID,
STATE=state,
APPLICATION_NAME=APPLICATION_NAME))
Как можно показать диалог на стороне клиента с ядром .net?
Спасибо, Майкл.