Не удается отследить текущего пользователя в flask-войдите в Stripe Webhook

#flask #webhooks #stripe-payments

#фляжка #веб — крючки #stripe-платежи #flask

Вопрос:

Я пытаюсь отследить текущего клиента и связать данные webhook с идентификатором электронной почты пользователя.

models.py

 from flask_login import UserMixin
from . import db

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True) # primary keys are required by SQLAlchemy
    #admin=db.Column
    public_id=db.Column(db.String(50), unique=True)
    email = db.Column(db.String(100), unique=True)
    password = db.Column(db.String(100))
    name = db.Column(db.String(1000))
  

main.py

 @main.route("/webhook", methods=["POST"])
def webhooks():
    payload = request.get_data(as_text=True)
    
    sig_header = request.headers.get("Stripe-Signature",None)
    
    

    try:
        event = stripe.Webhook.construct_event(
            payload,
            sig_header, stripe_keys["endpoint_secret"]
        )

    except ValueError as e:
        # Invalid payload
        print("Invalid payload")
        return "Invalid payload", 400
    except stripe.error.SignatureVerificationError as e:
        return "Invalid signature", 400

    if current_user.is_authenticated:
                 email=current_user.email
    else:
                  print("Not authenticated!")
  

И он продолжает печатать «Не аутентифицирован!» В случае, если я использую @login_required для конечной точки webhook, я продолжаю получать ошибку 302.

Пожалуйста, просветите меня, где я ошибаюсь

Комментарии:

1. Пользователь должен войти в систему. Где находится код для входа пользователя в систему?

Ответ №1:

current_user.is_authenticated это бессмысленно, потому что СООБЩЕНИЕ подписано (это общедоступный маршрут). Проблема заключается в том, payload что вы отправляете в API еще до запуска webhook. Добавьте массив metadata и поместите туда user_id . Тогда результирующий webhook также будет иметь metadata … а metadata имеет user_id . В этой ситуации нет другого способа узнать о чем-либо user_id , кроме как о том, что пользователь отсутствует.

Комментарии:

1. Большое спасибо! это имеет большой смысл!