oauthlib.oauth2.rfc6749.errors.InsecureTransportError: (insecure_transport) OAuth 2 MUST utilize https
Пытаюсь подключить авторизацию API гугла. Ошибка возникает в flow.fetch_token(authorization_response=authorization_response)
Сижу пытаюсь побороть уже 3й час примерно. Решил все таки обратиться за помощью.
Использую aiohttp
Логи
2020-04-23T17:48:13.527692+00:00 app[web.1]: [2020-04-23 17:48:13 +0000] [11] [ERROR] Error handling request
2020-04-23T17:48:13.527704+00:00 app[web.1]: Traceback (most recent call last):
2020-04-23T17:48:13.527723+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 418, in start
2020-04-23T17:48:13.527724+00:00 app[web.1]: resp = await task
2020-04-23T17:48:13.527724+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/aiohttp/web_app.py", line 458, in _handle
2020-04-23T17:48:13.527724+00:00 app[web.1]: resp = await handler(request)
2020-04-23T17:48:13.527725+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/aiohttp/web_middlewares.py", line 119, in impl
2020-04-23T17:48:13.527725+00:00 app[web.1]: return await handler(request)
2020-04-23T17:48:13.527725+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/aiohttp_session/__init__.py", line 154, in factory
2020-04-23T17:48:13.527725+00:00 app[web.1]: response = await handler(request)
2020-04-23T17:48:13.527726+00:00 app[web.1]: File "/app/manager/middlewares.py", line 49, in middleware
2020-04-23T17:48:13.527726+00:00 app[web.1]: return await handler(request)
2020-04-23T17:48:13.527726+00:00 app[web.1]: File "/app/manager/middlewares.py", line 32, in middleware
2020-04-23T17:48:13.527727+00:00 app[web.1]: return await handler(request)
2020-04-23T17:48:13.527727+00:00 app[web.1]: File "/app/manager/api/gdrive.py", line 41, in oauth2callback
2020-04-23T17:48:13.527728+00:00 app[web.1]: flow.fetch_token(authorization_response=authorization_response)
2020-04-23T17:48:13.527728+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/google_auth_oauthlib/flow.py", line 281, in fetch_token
2020-04-23T17:48:13.527728+00:00 app[web.1]: self.client_config['token_uri'], **kwargs)
2020-04-23T17:48:13.527734+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/requests_oauthlib/oauth2_session.py", line 240, in fetch_token
2020-04-23T17:48:13.527734+00:00 app[web.1]: authorization_response, state=self._state
2020-04-23T17:48:13.527740+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/clients/web_application.py", line 203, in parse_request_uri_response
2020-04-23T17:48:13.527740+00:00 app[web.1]: response = parse_authorization_code_response(uri, state=state)
2020-04-23T17:48:13.527746+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 262, in parse_authorization_code_response
2020-04-23T17:48:13.527746+00:00 app[web.1]: raise InsecureTransportError()
2020-04-23T17:48:13.527750+00:00 app[web.1]: oauthlib.oauth2.rfc6749.errors.InsecureTransportError: (insecure_transport) OAuth 2 MUST utilize https.
Код
async def oauth2callback(request):
session = await get_session(request)
# Specify the state when creating the flow in the callback so that it can
# verified in the authorization server response.
state = session.get('state')
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
get_client_id_file(), scopes=SCOPES, state=state)
flow.redirect_uri = request.scheme + '://' + request.host + \
str(request.app.router['oauth2callback'].url_for())
# Use the authorization server's response to fetch the OAuth 2.0 tokens.
authorization_response = str(request.url)[len(request.scheme) + 3]
flow.fetch_token(authorization_response=authorization_response)
# flow.fetch_token(code=request.query.get('code'))
# Store credentials in the session.
# ACTION ITEM: In a production app, you likely want to save these
# credentials in a persistent database instead.
credentials = flow.credentials
session['credentials'] = credentials_to_dict(credentials)
raise web.HTTPFound(request.app.router['main'].url_for())