Fixing up discovery document format for OAuth parameters based on feedback.
diff --git a/apiclient/oauth.py b/apiclient/oauth.py
index 63f896b..059cb5a 100644
--- a/apiclient/oauth.py
+++ b/apiclient/oauth.py
@@ -26,23 +26,61 @@
 
 
 def _abstract():
-  raise NotImplementedError("You need to override this function")
+  raise NotImplementedError('You need to override this function')
 
 
 buzz_discovery = {
-    'required': ['domain', 'scope'],
     'request': {
         'url': 'https://www.google.com/accounts/OAuthGetRequestToken',
-        'params': ['xoauth_displayname']
+        'parameters': {
+          'xoauth_displayname': {
+           'parameterType': 'query',
+           'required': False
+          },
+          'domain': {
+           'parameterType': 'query',
+           'required': True
+          },
+          'scope': {
+           'parameterType': 'query',
+           'required': True
+          },
         },
+      },
     'authorize': {
         'url': 'https://www.google.com/buzz/api/auth/OAuthAuthorizeToken',
-        'params': ['iconUrl', 'oauth_token']
+        'parameters': {
+          'oauth_token': {
+           'parameterType': 'query',
+           'required': True
+          },
+          'iconUrl': {
+           'parameterType': 'query',
+           'required': False
+          },
+          'domain': {
+           'parameterType': 'query',
+           'required': True
+          },
+          'scope': {
+           'parameterType': 'query',
+           'required': True
+          },
         },
+      },
     'access': {
         'url': 'https://www.google.com/accounts/OAuthGetAccessToken',
-        'params': []
+        'parameters': {
+          'domain': {
+           'parameterType': 'query',
+           'required': True
+          },
+          'scope': {
+           'parameterType': 'query',
+           'required': True
+          },
         },
+      },
     }
 
 
@@ -60,9 +98,7 @@
   """
   if name not in ['request', 'access', 'authorize']:
     raise KeyError(name)
-  keys = []
-  keys.extend(discovery['required'])
-  keys.extend(discovery[name]['params'])
+  keys = discovery[name]['parameters'].keys()
   query = {}
   for key in keys:
     if key in params:
@@ -128,7 +164,7 @@
     signer = oauth.SignatureMethod_HMAC_SHA1()
 
     # The closure that will replace 'httplib2.Http.request'.
-    def new_request(uri, method="GET", body=None, headers=None,
+    def new_request(uri, method='GET', body=None, headers=None,
                     redirections=httplib2.DEFAULT_MAX_REDIRECTS,
                     connection_type=None):
       """Modify the request headers to add the appropriate
@@ -169,7 +205,12 @@
     self.user_agent = user_agent
     self.params = kwargs
     self.request_token = {}
-    for key in discovery['required']:
+    required = {}
+    for uriinfo in discovery.itervalues():
+      for name, value in uriinfo['parameters'].iteritems():
+        if value['required'] and not name.startswith('oauth_'):
+          required[name] = 1
+    for key in required.iterkeys():
       if key not in self.params:
         raise MissingParameter('Required parameter %s not supplied' % key)