public async Task <IActionResult> Autorizar(LoginGovBrAuthenticationResponse response)
        {
            LoginGovBrUserData userData = new LoginGovBrUserData();

            try
            {
                // Realiza a chamada da API
                APIResponse apiResponse = await this.LoginUnicoRequest.RequestToken(response);

                // De posse do código de acesso (code), faz a chamada para recuperação do TOKEN de Autorização
                if (apiResponse.Result)
                {
                    // Armazena os dados recuperados pela requisição
                    userData = (LoginGovBrUserData)apiResponse.Data;

                    // Proceder com a criação da sessão e autorização dentro da aplicação
                }
            }
            catch (Exception e)
            {
            }

            // Recupera a URL de logout da aplicação
            TempData["LogoutURL"] = this.LoginUnicoRequest.GetLogoutURI();
            return(View(userData));
        }
Exemple #2
0
        /// <summary>
        /// Realiza a requisição do token de acesso e demais informações do usuário autenticado através do Login Único GOV.BR
        /// </summary>
        /// <param name="responseCode">Resposta da requisição de autenticação realizada através da página de login e senha do Governo Federal.</param>
        /// <returns>Resultado da operação</returns>
        public async Task <APIResponse> RequestToken(LoginGovBrAuthenticationResponse responseCode)
        {
            // Define a URI de requisição ao token
            string tokenURI = string.Format("{0}?grant_type={1}&code={2}&redirect_uri={3}", _tokenURI, "authorization_code", responseCode.Code, this._request.RedirectURI);

            // Define os dados a serem enviados via POST
            Dictionary <string, string> postData = new Dictionary <string, string>();

            // Instancia o helper de requisição
            RequestHelper request = new RequestHelper();

            // Realiza a chamada com a autenticação requisitada
            APIResponse response = await request.DoPostWithAuthentication(tokenURI, this._request.ClientID, this._request.ClientSecret, postData);

            // Realiza as conversões caso a requisição tenha sido realizada com sucesso
            if (response.Result)
            {
                // Converte a resposta para um objeto de usuário
                response.Data = JsonConvert.DeserializeObject <LoginGovBrUserData>(response.Data);
            }

            return(response);
        }