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())

Ответы (0 шт):