private static IDictionary<string, string> DecodeParameters(Uri uri)
{
// Create a dictionary of key value pairs returned in an OAuth authorization response URI query string
var answer = string.Empty;
// Get the values from the URI fragment or query string
if (!string.IsNullOrEmpty(uri.Fragment))
{
answer = uri.Fragment.Substring(1);
}
else
{
if (!string.IsNullOrEmpty(uri.Query))
{
answer = uri.Query.Substring(1);
}
}
// Parse parameters into key / value pairs
var keyValueDictionary = new Dictionary<string, string>();
var keysAndValues = answer.Split(new[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var kvString in keysAndValues)
{
var pair = kvString.Split('=');
string key = pair[0];
string value = string.Empty;
if (key.Length > 1)
{
value = Uri.UnescapeDataString(pair[1]);
}
keyValueDictionary.Add(key, value);
}
// Return the dictionary of string keys/values
return keyValueDictionary;
}
}