Как продолжить работу на порту react 3000 после обратного вызова OAuth 2.0, запущенного на порту django 8000

Мое приложение построено с помощью React frontend и Django backend.

Хотя часть React находится в папке frontend внутри проекта Django, я стараюсь сделать обе части настолько независимыми, насколько это возможно.

По сути, Django только сервер как поставщик API, а React управляет всем фронтендом.

В режиме dev, Django работает на localhost с портом 8000; React работает на порту 3000. Я завершил настройку CORS в моем файле setting.py

CORS_ALLOWED_ORIGINS = [
    'http://localhost:3000'
]

По сути, я могу тестировать как фронтенд, так и бэкенд совершенно независимо. Все Api фетчинг также работает корректно между Django и React.

Однако в моем приложении мне также нужно подключиться к Spotify API, чтобы сделать что-то. Во время процесса аутентификации мне нужно предоставить Redirect url для обратного вызова аутентификации Spotify.

Урл, который я регистрирую в Spotify, следующий:

http://127.0.0.1:8000/api-spotify/callback

в моем urls.py:

from .views import get_auth_callback

urlpatterns = [
    path('callback', get_auth_callback),

]

В view.py:

def get_auth_callback(request):
    code = request.GET.get('code')

    response = post('https://accounts.spotify.com/api/token', data={
        'code': code,
        'redirect_uri': env.str('REDIRECT_URL'),
        'grant_type': 'authorization_code',
        'client_id': env.str('CLIENT_ID'),
        'client_secret': env.str('CLIENT_SECRET')
    }).json()

    access_token = response.get('access_token')
    token_type = response.get('token_type')
    refresh_token = response.get('refresh_token')
    expires_in = response.get('expires_in')
    
    edit_user_token(request.session.session_key, refresh_token, access_token, expires_in, token_type)
    return redirect('/')

Проблема в последней строке:

  return redirect('/')

Если я вхожу в Spotify с моего фронтенда (порт 3000), ссылка перенаправления приведет меня на порт 8000, потому что функция обратного вызова перенаправления настроена в Django.

И мое тестирование на порту 3000 больше не может продолжаться.

Есть ли какое-нибудь решение для такой проблемы? Или мне нужно всегда делать npm run build и тестировать все только на порту 8000?

Проблема в следующем: http://127.0.0.1:8000/api-spotify/callback

Для тестового порта необходимо зарегистрировать новый url в Spotify: http://127.0.0.1:3000/api-spotify/callback

Вернуться на верх