Как продолжить работу на порту 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