Allow setting the response_type in OAuth2WebServerFlow.
Reviewed in https://codereview.appspot.com/6749066/.
Fixes issue #201.
diff --git a/oauth2client/client.py b/oauth2client/client.py
index 851b639..dc9bc89 100644
--- a/oauth2client/client.py
+++ b/oauth2client/client.py
@@ -1017,6 +1017,10 @@
**kwargs):
"""Constructor for OAuth2WebServerFlow.
+ The kwargs argument is used to set extra query parameters on the
+ auth_uri. For example, the access_type and approval_prompt
+ query parameters can be set via kwargs.
+
Args:
client_id: string, client identifier.
client_secret: string client secret.
@@ -1044,6 +1048,7 @@
self.token_uri = token_uri
self.params = {
'access_type': 'offline',
+ 'response_type': 'code',
}
self.params.update(kwargs)
@@ -1070,7 +1075,6 @@
raise ValueError('The value of redirect_uri must not be None.')
query = {
- 'response_type': 'code',
'client_id': self.client_id,
'redirect_uri': self.redirect_uri,
'scope': self.scope,
diff --git a/tests/test_oauth2client.py b/tests/test_oauth2client.py
index be94fa1..8f855d4 100644
--- a/tests/test_oauth2client.py
+++ b/tests/test_oauth2client.py
@@ -256,22 +256,23 @@
self.assertEqual(OOB_CALLBACK_URN, q['redirect_uri'][0])
self.assertEqual('offline', q['access_type'][0])
- def test_override_flow_access_type(self):
- """Passing access_type overrides the default."""
+ def test_override_flow_via_kwargs(self):
+ """Passing kwargs to override defaults."""
flow = OAuth2WebServerFlow(
client_id='client_id+1',
client_secret='secret+1',
scope='foo',
redirect_uri=OOB_CALLBACK_URN,
user_agent='unittest-sample/1.0',
- access_type='online'
+ access_type='online',
+ response_type='token'
)
authorize_url = flow.step1_get_authorize_url()
parsed = urlparse.urlparse(authorize_url)
q = parse_qs(parsed[4])
self.assertEqual('client_id+1', q['client_id'][0])
- self.assertEqual('code', q['response_type'][0])
+ self.assertEqual('token', q['response_type'][0])
self.assertEqual('foo', q['scope'][0])
self.assertEqual(OOB_CALLBACK_URN, q['redirect_uri'][0])
self.assertEqual('online', q['access_type'][0])