public async Task <IActionResult> GetAccessToken([FromBody] AccessTokenRequest request) { try { // TODO Review the amount of time an access token should live for int accessTokenMinutes = 240; DateTime expiryDate = DateTime.Now.AddMinutes(accessTokenMinutes); AccessTokenResponse tokenResponse = new AccessTokenResponse { token = await _tokenManager.CreateAccessTokenWithExpiry(request.refreshToken, expiryDate), token_type = "access", // ExpiresIn should be in seconds format, so multiply minutes by 60 ExpiresIn = accessTokenMinutes * 60 }; return(Ok(tokenResponse)); } catch (Exception) { // FIXME Token validation and database exception differences return(BadRequest(new APIError("An unknown error occurred.", "ERR_UNKNOWN"))); } }