Как отправить данные обратно в react frontend после обратного вызова из google OAuth в django?

Я работаю над приложением с двумя частями, как фронтенд и бэкенд в react и django, я использую поток на стороне сервера и использую аутентификацию токена для входа и систему аутентификации с OAuth. Когда пользователь нажимает на фронтенде на LOGIN WITH GOOGLE, ему разрешается выбрать email и войти на react-сервер с портом 3000, а url перенаправления или callback url - это мой django backend с портом 8080, и когда он будет в продакшене, для этого будет указан ip или домен. Но теперь, когда я вхожу во фронтенд, он переходит на callback и отправляет все данные туда. Теперь дело в том, что после получения кода авторизации, получения access_token и затем данных, запрос остается в коде бэкенда и связь с react frontend полностью разрывается. Теперь я не понимаю, как отправить данные обратно во фронтенд с токеном доступа и всеми остальными данными.

my views.py


"http://localhost:8080/api/callback/"
@api_view(["GET"])
def getCallBack(request , *args , **kwargs):
    if request.method == "GET" :
        data = {
            "scope" : request.GET.get("scope").strip().lstrip().rstrip() , 
            "authuser" : request.GET.get("authuser").strip().lstrip().rstrip() , 
            "prompt":  request.GET.get("prompt").strip().lstrip().rstrip() ,
            "code" : request.GET.get("code").strip().lstrip().rstrip() ,
            "client_id" :"",
            "client_secret" : "",
            "redirect_uri" :"http://localhost:8080/api/callback/",
            "grant_type" :"authorization_code"
        }
        response = requests.post("https://accounts.google.com/o/oauth2/token" , data = data)
        token = response.json()["access_token"]
        payload = {
            "access_token" : token ,
        }
        response = requests.get('https://www.googleapis.com/oauth2/v2/userinfo', params=payload)
        data_dict = response.json()
        email = data_dict["email"].strip().lstrip().rstrip()
        try : 
            user = UserAccount.objects.get(email = email)
        except : 
            user = None
        if not user:
            return HttpResponse("You are not an authorized user or not a client , you cannot access the website !")
        try :
            token = Token.objects.get(user = user)
        except : 
            token = Token.objects.create(user = user  )
            token.save()
        
        return Response(
             {
                "token" : token.key,
                "some_extra_data" : "data" , 
            },
            status = status.HTTP_200_OK
        )


Дело в том, что все соединение разорвано с react frontend и я хочу сделать так, чтобы пользователь входил в систему с помощью token auth в django, так как отправить эти данные обратно во frontend. Любая помощь была бы очень кстати. Спасибо .

Пусть url обратного вызова будет url фронтенда/React, а не бэкенда. Как только google вызовет этот callback url, React получит request_params типа access_tocken и отправит access_token в ваш Django backend. Обработает запрос и ответит React, откуда вы сможете обновить представление до logged_in.

Это поможет выполнить ваше требование без потери соединения с Django-backend.

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