Обработка redirect_uri при oAuth2 для извлечения кода для авторизации в django
Подскажите, пожалуйста, как мне связать выданный мне redirect_uri вида ru.pix.card://oauth2-redirect, чтобы я мог обработать его сразу после того как пользователь авторизуется? Сейчас я получаю в браузере после ввода username и password на странице авторизации всплывающее окно "Открыть в xdg-open", при этом в консоли браузера я вижу передаваемый код по адресу вида ru.pix.card://oauth2-redirect?code=XXXX&state=XXX. Я при этом остаюсь на той же странице авторизации, а не переадресовываюсь в Django обратно. Никак не могу добиться, чтобы этот URI обрабатывался автоматически.
Мой код в Django выглядит сейчас так: urls.py
app_name = 'main'
urlpatterns = [
path('', start, name='start'),
path('/oauth2-redirect', get_code_view, name='swager_auth'),
]
models.py
class Swager:
baseurl = ...
client_id = ...
client_secret = ...
authorization_URL = ...
token_URL = ...
redirect_uri = 'ru.pix.card://oauth2-redirect'
scope = ...
grant_type = 'accesscode'
def send_auth(self):
self.oauth = OAuth2Session(
self.client_id,
redirect_uri=self.redirect_uri,
scope=self.scope
)
self.auth_url, self.state = self.oauth.authorization_url(
self.authorization_URL
)
def get_token(self, code):
token = self.oauth.fetch_token(
self.token_URL,
code=code,
client_secret=self.client_secret
)
self.token_type = token.get('token_type')
self.access_token = token.get('access_token')
self.refresh_token = token.get('refresh_token')
views.py
SWAGER = Swager()
def start(request):
SWAGER.send_auth()
return redirect(SWAGER.auth_url)
def get_code_view(request):
state = request.GET.get('state')
code = request.GET.get('code')
SWAGER.get_token(code=code)
return render(request, 'mainapp/auth.html', content={'data': SWAGER.access_token})
редирект на url авторизации проходит успешно, но обратно не возвращается в другое представление, видимо я что-то важное пропустил, предполагаю что моя проблема в том, что я не знаю как я должен на стороне сервера работать с redirect_uri, сейчас тестовый стенд работает по адресу localhost:8080, находится в Docker контейнере за NGINX, который слушает порт 80