Как отправить данные обратно в 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.