Тема должна быть строкой JWT Request Flask/Python [закрыто]Python

Программы на Python
Ответить
Anonymous
 Тема должна быть строкой JWT Request Flask/Python [закрыто]

Сообщение Anonymous »

У меня возникли проблемы с отправкой запроса с помощью токена JWT. Я использую Postman для проверки своей конечной точки после авторизации пользователя и отправки ему токена JWT. Я хочу использовать этот JWT для отправки запроса в другую конечную точку для добавления события, но я не могу правильно структурировать запрос и точно не знаю, почему он продолжает возвращать ошибку 422 с этим ответом.

{
"msg": "Тема должна быть строкой"

Вот мой код:

Код: Выделить всё

@auth_bp.route("/addevent", methods=["POST"])
@jwt_required()
def add_event():
try:
print("Reached endpoint")

user_identity = get_jwt_identity()
access_token = user_identity.get("access_token")
if not access_token:
return jsonify({"error": "No Authorization"}), 401
event_details = request.json
headers = {"Authorization": f"Bearer {access_token}"}
response = requests.post(
"https://www.googleapis.com/calendar/v3/calendars/primary/events",
headers=headers,
json=event_details,
)

return jsonify(response.json()), response.status_code
except Exception as e:
return jsonify({"error": f"Failed to add event: {e}"}), 500
Вот мой запрос с использованием Curl:

Код: Выделить всё

curl -X POST http://127.0.0.1:5000/api/auth/addevent \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d "{ \
\"summary\": \"Team Meeting\", \
\"location\": \"Zoom\", \
\"description\": \"Weekly sync-up meeting.\", \
\"start\": { \
\"dateTime\": \"2024-12-02T14:00:00-05:00\", \
\"timeZone\": \"America/New_York\" \
}, \
\"end\": { \
\"dateTime\": \"2024-12-02T15:00:00-05:00\", \
\"timeZone\": \"America/New_York\" \
}, \
\"attendees\": [ \
{ \"email\": \"team.member@example.com\" } \
] \
}"
Я пробовал проверить токен JWT, пробовал обновить и получить новый, пробовал удалить декоратор @jwt_required() и могу достичь конечной точки, которая то, что я ожидал.

Код: Выделить всё

@auth_bp.route("/calendar-callback", methods=["GET"])
def calendar_callback():
try:
code = request.args.get("code")

google_provider_cfg = requests.get(GOOGLE_DISCOVERY_URL).json()
token_endpoint = google_provider_cfg["token_endpoint"]
token_url, headers, body = client.prepare_token_request(
token_endpoint,
authorization_response=request.url,
redirect_url=url_for("auth.calendar_callback", _external=True),
client_secret=GOOGLE_CLIENT_SECRET,
)
token_response = requests.post(token_url, headers=headers, data=body)
token_response_data = client.parse_request_body_response(token_response.text)

access_token = token_response_data["access_token"]

jwt_token = create_access_token(identity={"access_token": access_token})
return jsonify({"jwt_token": jwt_token, "message": "Calendar access authorized!"}), 200
except Exception as e:
return jsonify({"error": f"Could not get authorization: {e}"}), 500
Вот что я использую для создания JWT. Это неправильный способ создания JWT?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ask-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»