Первое, что я хочу реализовать, - это аутентификация, которую я сделал правильно. Однако я пытаюсь написать метод Чтобы обновить мой access_token благодаря repreresh_token , данному API Truelayer, когда пользователь первым аутентификацией.
Проблема в том, что я читаю онлайн Хорошей практикой является сохранение reporresh_token в файлах http только. Итак, я сделал что-то подобное < /p>
Код: Выделить всё
def truelayer_callback(request):
code = request.GET.get('code')
token_data = {
"grant_type": "authorization_code",
"client_id": settings.TRUELAYER_CLIENT_ID,
"client_secret": settings.TRUELAYER_CLIENT_SECRET,
"redirect_uri": REDIRECT_URI,
"code": code,
}
try:
data = requests.post(TOKEN_URL, data=token_data).json()
access_token = data.get('access_token')
refresh_token = data.get('refresh_token')
if access_token:
query_params = urlencode({'token' : access_token})
response = HttpResponseRedirect(f'{FRONTEND_URL}?{query_params}')
response.set_cookie(key='refresh_token', value=refresh_token, httponly=True, secure=False, samesite='Lax')
return response
return HttpResponseRedirect(f'{FRONTEND_URL}?error=No access token received')
except Exception as e:
return HttpResponseRedirect(f'{FRONTEND_URL}?error={str(e)}')
Код: Выделить всё
def check_refresh_cookie(request):
refresh_token = request.COOKIES.get("refresh_token") # is None
token_data = {
"grant_type": "refresh_token",
"client_id": settings.TRUELAYER_CLIENT_ID,
"client_secret": settings.TRUELAYER_CLIENT_SECRET,
"refresh_token": refresh_token,
}
try:
response = requests.post(TOKEN_URL, data=token_data)
return JsonResponse({'access_token' : response.json()})
except Exception as e:
return HttpResponseRedirect(f'{FRONTEND_URL}?error={str(e)}')
Я не включил код спереди, потому что это в основном кнопка с методом OnClick.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -and-react