Google OAuth2 - диалоговое окно отображения согласия - PullRequest
0 голосов
/ 07 июля 2019

В соответствии с документацией Я реализовал часть протокола 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, для этого должно быть показано диалоговое окно согласия for example

Когда сервер получает ответ об успешной авторизации от Google, каким-то образом должен быть показан диалог,это способ сделать это на python

esponse = make_response(
  render_template('index.html',
                  CLIENT_ID=CLIENT_ID,
                  STATE=state,
                  APPLICATION_NAME=APPLICATION_NAME))

Как можно показать диалог на стороне клиента с ядром .net?

Спасибо, Майкл.

...