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))); } }
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)); } }