ошибка с маркером подписи при заполнении формы - PullRequest
0 голосов
/ 17 апреля 2020

Я изучаю Python, и я пытаюсь заполнить форму типа, используя Python запросы, однако я получаю этот ответ об ошибке:

{"code":"VALIDATION_ERROR","description":"The provided body is malformed.","details":[{"code":"INVALID_PAYLOAD","description":"signature mismatch","in":"BODY","field":".signature"}]}

Однако, когда я ставлю token.text значение вручную в data работает. Я не могу заставить его работать при программном добавлении токена в полезную нагрузку, даже пытался с str(), и он не работает.

Вот код:

import requests
import time

epochTime = int(time.time())
token = requests.get("https://mehdikhireddine.typeform.com/app/form/result/token/OcotDC/default")
final = token.text
print(token.text)
data = { "signature": final,
         "form_id": "OcotDC",
         "landed_at": epochTime,""
         "answers": [
        {
            "field": {
                "id": "nDoisfzMsrBP",
                "type": "short_text"
            },
            "type": "text",
            "text": "mehdilemoi"
        },
        {
            "field": {
                "id": "iCW4s6Fc37OL",
                "type": "legal"
            },
            "type": "boolean",
            "boolean": True
        }

    ]
}
r = requests.post("https://mehdikhireddine.typeform.com/app/form/submit/OcotDC", json=data)
print(r.text)

1 Ответ

0 голосов
/ 17 апреля 2020

Эта проблема возникает, если вы сохраняете epochTime до получения token из ответа HTTPS, предположительно потому, что серверу затем не удается сопоставить подпись и время, что приводит к "signature mismatch".

. это можно исправить, взяв текущее время после получения ответа token, то есть:

token = requests.get("https://mehdikhireddine.typeform.com/app/form/result/token/OcotDC/default")
epochTime = int(time.time())

Вывод:

{"message":"success"}

Обратите внимание, что это может все еще периодически терпит неудачу, если проходит слишком много времени между получением ответа и получением epochTime.

...