|pypi|
This library provides oauthlib
integration with google-auth
.
.. |build| image:: https://travis-ci.org/googleapis/google-auth-library-python-oauthlib.svg?branch=main :target: https://googleapis.dev/python/google-auth-oauthlib/latest/index.html .. |pypi| image:: https://img.shields.io/pypi/v/google-auth-oauthlib.svg :target: https://pypi.python.org/pypi/google-auth-oauthlib
.. _oauthlib: https://github.com/idan/oauthlib .. _google-auth: https://github.com/googleapis/google-auth-library-python
You can install using pip
_::
$ pip install google-auth-oauthlib
.. _pip: https://pip.pypa.io/en/stable/
The latest documentation is available at google-auth-oauthlib.googleapis.dev
_.
.. _google-auth-oauthlib.googleapis.dev: https://googleapis.dev/python/google-auth-oauthlib/latest/index.html
Python >= 3.6
Python == 2.7, Python == 3.5.
The last version of this library compatible with Python 2.7 and 3.5 is
google-auth-oauthlib==0.4.1
.
Apache 2.0 - See the LICENSE
_ for more information.
.. _the LICENSE: https://github.com/googleapis/google-auth-library-python-oauthlib/blob/main/LICENSE
This PR was generated with Release Please. See documentation.
Note: #226 was also for this test, but it was closed more than 10 days ago. So, I didn't mark it flaky.
commit: 0f402dbd40ba865bd22e188d87ace47c336bbd46 buildURL: Build Status, Sponge status: failed
self =webbrowser_mock = instance = mock_fetch_token = , port = 60434 @pytest.mark.webtest @mock.patch("google_auth_oauthlib.flow.webbrowser", autospec=True) def test_run_local_server(self, webbrowser_mock, instance, mock_fetch_token, port): auth_redirect_url = urllib.parse.urljoin( f"http://localhost:{port}", self.REDIRECT_REQUEST_PATH ) with concurrent.futures.ThreadPoolExecutor(max_workers=1) as pool: future = pool.submit(partial(instance.run_local_server, port=port)) while not future.done(): try: requests.get(auth_redirect_url) except requests.ConnectionError: # pragma: NO COVER pass > credentials = future.result() tests/unit/test_flow.py:334: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/local/lib/python3.9/concurrent/futures/_base.py:439: in result return self.__get_result() /usr/local/lib/python3.9/concurrent/futures/_base.py:391: in __get_result raise self._exception /usr/local/lib/python3.9/concurrent/futures/thread.py:58: in run result = self.fn(*self.args, **self.kwargs) google_auth_oauthlib/flow.py:499: in run_local_server local_server = wsgiref.simple_server.make_server( /usr/local/lib/python3.9/wsgiref/simple_server.py:154: in make_server server = server_class((host, port), handler_class) /usr/local/lib/python3.9/socketserver.py:452: in __init__ self.server_bind() /usr/local/lib/python3.9/wsgiref/simple_server.py:50: in server_bind HTTPServer.server_bind(self) /usr/local/lib/python3.9/http/server.py:136: in server_bind socketserver.TCPServer.server_bind(self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def server_bind(self): """Called by constructor to bind the socket. May be overridden. """ if self.allow_reuse_address: self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > self.socket.bind(self.server_address) E OSError: [Errno 98] Address already in use /usr/local/lib/python3.9/socketserver.py:466: OSError
WIP PR for discussion: aiming to provide the ability to include a redirect URI, client ID, and client secrets to facilitate the migration away from "out of band" OAuth authentication.
@tswast
See also changes in these repos: * https://github.com/googleapis/python-bigquery-pandas/pull/595 * https://github.com/googleapis/google-auth-library-python-oauthlib/pull/259 * https://github.com/pydata/pydata-google-auth/pull/58
Using your tool to connect to your service it will return an id token with the audience set to the client_id. As far as I can tell there's no way in this code to set that correctly. With OOB copy/paste flow going out of style, you gave us a tool that almost works. But in the end feels like this:
Is there a way to have the redirection callback from Google SSO made as a POST request instead of a GET request, that way all the parameters would be encoded in the body.
Microsoft allows it by changing the response_body parameter when creating the flow (using the msal library).
This issue is related to the reference link of requests-oauthlib for the docs. It was changed from stable to latest as mentioned in PR
Referenced in helpers.py and flow.py
Thanks!