private LiveLoginResult GenerateLoginResultFrom(Stream responseStream) { IDictionary <string, object> jsonObj; try { using (var reader = new StreamReader(responseStream)) { var jsReader = new JsonReader(reader.ReadToEnd()); jsonObj = jsReader.ReadValue() as IDictionary <string, object>; } } catch (FormatException fe) { return(new LiveLoginResult( new LiveAuthException(AuthErrorCodes.ServerError, fe.Message))); } if (jsonObj == null) { return(new LiveLoginResult( new LiveAuthException(AuthErrorCodes.ServerError, ResourceHelper.GetString("ServerError")))); } if (jsonObj.ContainsKey(AuthConstants.Error)) { var errorCode = jsonObj[AuthConstants.Error] as string; if (errorCode.Equals(AuthErrorCodes.InvalidGrant, StringComparison.Ordinal)) { return(new LiveLoginResult(LiveConnectSessionStatus.NotConnected, null)); } string errorDescription = string.Empty; if (jsonObj.ContainsKey(AuthConstants.ErrorDescription)) { errorDescription = jsonObj[AuthConstants.ErrorDescription] as string; } return(new LiveLoginResult(new LiveAuthException(errorCode, errorDescription))); } LiveConnectSession newSession = LiveAuthClient.CreateSession(this.AuthClient, jsonObj); return(new LiveLoginResult(LiveConnectSessionStatus.Connected, newSession)); }