diff --git a/authlib/oauth2/rfc6749/parameters.py b/authlib/oauth2/rfc6749/parameters.py index 4ffdb1d6..8c3a5aa6 100644 --- a/authlib/oauth2/rfc6749/parameters.py +++ b/authlib/oauth2/rfc6749/parameters.py @@ -60,7 +60,7 @@ def prepare_grant_uri(uri, client_id, response_type, redirect_uri=None, params.append(('state', state)) for k in kwargs: - if kwargs[k]: + if kwargs[k] is not None: params.append((to_unicode(k), kwargs[k])) return add_params_to_uri(uri, params) diff --git a/tests/core/test_oauth2/test_rfc6749_misc.py b/tests/core/test_oauth2/test_rfc6749_misc.py index 612353bd..22ee8f2b 100644 --- a/tests/core/test_oauth2/test_rfc6749_misc.py +++ b/tests/core/test_oauth2/test_rfc6749_misc.py @@ -50,6 +50,13 @@ def test_parse_implicit_response(self): rv, {'access_token': 'a', 'token_type': 'bearer', 'state': 'c'} ) + + def test_prepare_grant_uri(self): + grant_uri = parameters.prepare_grant_uri('https://i.b/authorize', 'dev', 'code', max_age=0) + self.assertEqual( + grant_uri, + "https://i.b/authorize?response_type=code&client_id=dev&max_age=0" + ) class OAuth2UtilTest(unittest.TestCase):