Using OAuth 1.0 encoded requests for external webservice calls
It looks like you're using an old version of Jesper Joergensen's OAuth Playground. I worked on this a couple of years ago to get it working with a variety of providers, and needed to fix parameter encoding.
The relevant section is:
private Map<String,String> getUrlParams(String value) {
Map<String,String> res = new Map<String,String>();
if(value==null || value=='') {
return res;
}
for(String s : value.split('&')) {
System.debug('getUrlParams: '+s);
List<String> kv = s.split('=');
if(kv.size()>1) {
// RFC 5849 section 3.4.1.3.1 and 3.4.1.3.2 specify that parameter names
// and values are decoded then encoded before being sorted and concatenated
// Section 3.6 specifies that space must be encoded as %20 and not +
String encName = EncodingUtil.urlEncode(EncodingUtil.urlDecode(kv[0], 'UTF-8'), 'UTF-8').replace('+','%20');
String encValue = EncodingUtil.urlEncode(EncodingUtil.urlDecode(kv[1], 'UTF-8'), 'UTF-8').replace('+','%20');
System.debug('getUrlParams: -> '+encName+','+encValue);
res.put(encName,encValue);
}
}
return res;
}
My fork is at https://github.com/metadaddy-sfdc/sfdc-oauth-playground