diff --git a/google_auth_oauthlib/flow.py b/google_auth_oauthlib/flow.py index 6123e59..b5026e3 100644 --- a/google_auth_oauthlib/flow.py +++ b/google_auth_oauthlib/flow.py @@ -150,7 +150,8 @@ def from_client_config(cls, client_config, scopes, **kwargs): google_auth_oauthlib.helpers.session_from_client_config( client_config, scopes, **kwargs)) - return cls(session, client_type, client_config) + redirect_uri = kwargs.get('redirect_uri', None) + return cls(session, client_type, client_config, redirect_uri) @classmethod def from_client_secrets_file(cls, client_secrets_file, scopes, **kwargs): diff --git a/tests/test_flow.py b/tests/test_flow.py index 1404636..d68932c 100644 --- a/tests/test_flow.py +++ b/tests/test_flow.py @@ -40,6 +40,15 @@ def test_from_client_secrets_file(self): CLIENT_SECRETS_INFO['web']['client_id']) assert instance.oauth2session.scope == mock.sentinel.scopes + def test_from_client_secrets_file_with_redirect_uri(self): + instance = flow.Flow.from_client_secrets_file( + CLIENT_SECRETS_FILE, scopes=mock.sentinel.scopes, + redirect_uri=mock.sentinel.redirect_uri + ) + assert (instance.redirect_uri == + instance.oauth2session.redirect_uri == + mock.sentinel.redirect_uri) + def test_from_client_config_installed(self): client_config = {'installed': CLIENT_SECRETS_INFO['web']} instance = flow.Flow.from_client_config( @@ -49,6 +58,16 @@ def test_from_client_config_installed(self): client_config['installed']['client_id']) assert instance.oauth2session.scope == mock.sentinel.scopes + def test_from_client_config_with_redirect_uri(self): + client_config = {'installed': CLIENT_SECRETS_INFO['web']} + instance = flow.Flow.from_client_config( + client_config, scopes=mock.sentinel.scopes, + redirect_uri=mock.sentinel.redirect_uri + ) + assert (instance.redirect_uri == + instance.oauth2session.redirect_uri == + mock.sentinel.redirect_uri) + def test_from_client_config_bad_format(self): with pytest.raises(ValueError): flow.Flow.from_client_config({}, scopes=mock.sentinel.scopes)