Hi Chris,
thanks for sharing this.
I came across the same problem recently when trying to help a python developer generate oauth signed streaming URLs. After a bit of googling and digging around in the oauth2 code I've found out that adding an extra parameter is_form_encoded=True when creating the oauth request gets rid of the problem; see the full code below.
If you do end up trying this approach let me know if it worked for you as well or not.
Cheers
Filip
----
import oauth2 as oauth
consumer = oauth.Consumer("YOUR_API_KEY", "YOUR_API_SECRET")
req = oauth.Request(method="GET", url=request_url, is_form_encoded=True)
req['oauth_timestamp'] = oauth.Request.make_timestamp()
req['oauth_nonce'] = oauth.Request.make_nonce()
req.sign_request(oauth.SignatureMethod_HMAC_SHA1(), consumer, token=None)
print req.to_url()