dc3fb43
diff --git a/oauth2/__init__.py b/oauth2/__init__.py
dc3fb43
index 835270e..6fd2a15 100644
dc3fb43
--- a/oauth2/__init__.py
dc3fb43
+++ b/oauth2/__init__.py
dc3fb43
@@ -608,7 +608,10 @@ class Request(dict):
dc3fb43
         """Turn URL string into parameters."""
dc3fb43
         parameters = parse_qs(param_str.encode('utf-8'), keep_blank_values=True)
dc3fb43
         for k, v in parameters.iteritems():
dc3fb43
-            parameters[k] = urllib.unquote(v[0])
dc3fb43
+            if len(v) == 1:
dc3fb43
+                parameters[k] = urllib.unquote(v[0])
dc3fb43
+            else:
dc3fb43
+                parameters[k] = [ urllib.unquote(i) for i in v ]
dc3fb43
         return parameters
dc3fb43
 
dc3fb43
 
dc3fb43
diff --git a/tests/test_oauth.py b/tests/test_oauth.py
dc3fb43
index 099e579..d6ab882 100644
dc3fb43
--- a/tests/test_oauth.py
dc3fb43
+++ b/tests/test_oauth.py
dc3fb43
@@ -889,6 +889,13 @@ class TestRequest(unittest.TestCase, ReallyEqualMixin):
dc3fb43
         req = oauth.Request.from_request("GET", url)
dc3fb43
         self.assertEquals(None, req)
dc3fb43
 
dc3fb43
+    def test_from_request_with_query_string(self):
dc3fb43
+        url = "http://sp.example.com/"
dc3fb43
+        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'
dc3fb43
+        req = oauth.Request.from_request('GET', url, query_string=qs)
dc3fb43
+        res = req.get_normalized_parameters()
dc3fb43
+        self.assertEquals(qs, res)
dc3fb43
+
dc3fb43
     def test_from_token_and_callback(self):
dc3fb43
         url = "http://sp.example.com/"
dc3fb43