Blob Blame History Raw
diff --git a/oauth2/__init__.py b/oauth2/__init__.py
index 835270e..6fd2a15 100644
--- a/oauth2/__init__.py
+++ b/oauth2/__init__.py
@@ -608,7 +608,10 @@ class Request(dict):
         """Turn URL string into parameters."""
         parameters = parse_qs(param_str.encode('utf-8'), keep_blank_values=True)
         for k, v in parameters.iteritems():
-            parameters[k] = urllib.unquote(v[0])
+            if len(v) == 1:
+                parameters[k] = urllib.unquote(v[0])
+            else:
+                parameters[k] = [ urllib.unquote(i) for i in v ]
         return parameters
 
 
diff --git a/tests/test_oauth.py b/tests/test_oauth.py
index 099e579..d6ab882 100644
--- a/tests/test_oauth.py
+++ b/tests/test_oauth.py
@@ -889,6 +889,13 @@ class TestRequest(unittest.TestCase, ReallyEqualMixin):
         req = oauth.Request.from_request("GET", url)
         self.assertEquals(None, req)
 
+    def test_from_request_with_query_string(self):
+        url = "http://sp.example.com/"
+        qs = 'multi=BAR&multi=FOO&multi_same=FOO&multi_same=Foo&oath_consumer_key=0685bd9184jfhq22&oauth_nonce=4572616e48616d6d65724c61686176&oauth_signature_method=HMAC_SHA1&oauth_timestamp=137131200&oauth_token=ad180jjd733klru7&oauth_version=1.0'
+        req = oauth.Request.from_request('GET', url, query_string=qs)
+        res = req.get_normalized_parameters()
+        self.assertEquals(qs, res)
+
     def test_from_token_and_callback(self):
         url = "http://sp.example.com/"