From: Grahame Bowland Date: Tue, 20 Mar 2012 13:52:28 +0000 (+0800) Subject: Do not quote ~ for oauth; see https://dev.twitter.com/discussions/1260 X-Git-Tag: twitter-1.8.0~8^2 X-Git-Url: https://jfr.im/git/z_archive/twitter.git/commitdiff_plain/d8a0b4a2a9a1f0fe1dd6ee21b8203d25f930c260?ds=inline;hp=--cc Do not quote ~ for oauth; see https://dev.twitter.com/discussions/1260 --- d8a0b4a2a9a1f0fe1dd6ee21b8203d25f930c260 diff --git a/twitter/oauth.py b/twitter/oauth.py index 9ee4fd0..6c1b68f 100644 --- a/twitter/oauth.py +++ b/twitter/oauth.py @@ -104,15 +104,15 @@ class OAuth(Auth): enc_params = urlencode_noplus(sorted(params.items())) - key = self.consumer_secret + "&" + urllib_parse.quote(self.token_secret, '') + key = self.consumer_secret + "&" + urllib_parse.quote(self.token_secret, safe='~') message = '&'.join( - urllib_parse.quote(i, '') for i in [method.upper(), base_url, enc_params]) + urllib_parse.quote(i, safe='~') for i in [method.upper(), base_url, enc_params]) signature = (base64.b64encode(hmac.new( key.encode('ascii'), message.encode('ascii'), hashlib.sha1) .digest())) - return enc_params + "&" + "oauth_signature=" + urllib_parse.quote(signature, '') + return enc_params + "&" + "oauth_signature=" + urllib_parse.quote(signature, safe='~') def generate_headers(self): return {} @@ -129,4 +129,4 @@ def urlencode_noplus(query): if type(v) is unicode: v = v.encode('utf-8') new_query.append((k, v)) query = new_query - return urlencode(query).replace("+", "%20") + return urlencode(query, safe='~').replace("+", "%20")