public async Task <JsonResult> Refresh(string refreshToken)
        {
            try
            {
                LoginRefreshViewModel responseVM = await _authAdapter.RefreshAuth(refreshToken);

                Response.StatusCode = (int)HttpStatusCode.OK;
                return(Json(responseVM));
            }
            catch (Exception ex)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json(MsgFactory.Error(ex)));
            }
        }
Exemplo n.º 2
0
        public async Task <LoginRefreshViewModel> RefreshAuth(string refreshToken)
        {
            var client   = new HttpClient();
            var uri      = new Uri("https://securetoken.googleapis.com/v1/token?" + apiKey);
            var response =
                await client.PostAsJsonAsync(uri, new { grant_type = "refresh_token", refresh_token = refreshToken });

            FirebaseRefreshResponse fbvm = null;

            if (response.IsSuccessStatusCode)
            {
                // var obj = await response.Content.ReadAsAsync(typeof(object));
                fbvm = await response.Content.ReadAsAsync <FirebaseRefreshResponse>();

                var respVm = new LoginRefreshViewModel()
                {
                    IdToken      = fbvm.id_token,
                    ExpiresIn    = fbvm.expires_in,
                    RefreshToken = fbvm.refresh_token
                };

                return(respVm);
            }
            else
            {
                // error occurred
                var obj = await response.Content.ReadAsAsync <FirebaseError>();

                var innerExc = string.Empty;
                if (obj.Error.Errors != null && obj.Error.Errors.Count > 0)
                {
                    innerExc = string.Join(Environment.NewLine,
                                           obj.Error.Errors.Select(k => k.Domain + " - " + k.Reason + " - " + k.Message));
                }

                throw new Exception(obj.Error.Message, new Exception(innerExc));
            }
        }