Ошибка при авторизации "failed to decode JSON"

Попробовал в качестве практики регистрацию/авторизацию на сайте твич.

import requests
import json
data = {'arkose': {'token': "8695f79e392872821.3637110305|r=eu-west-1|metabgclr=transparent|guitextcolor=%23000000|metaiconclr=%23757575|meta=3|lang=ru|pk=E5554D43-23CC-1982-971D-6A2262A2CA24|at=40|sup=1|rid=33|atp=2|cdn_url=https://cdn.arkoselabs.com/fc|lurl=https://audio-eu-west-1.arkoselabs.com|surl=https://client-api.arkoselabs.com"},
    'birthday':{'day': 8, 'month': 7, 'year': 2000},
    'client_id':"kimne78kx3ncx6brgo4mv6wki5h1ko",
    'email': "[email protected]",
    'include_verification_code': 'true',
    'password': "XXXXXXXXX",
    'username': "XXXXXXX"}

a = requests.post("https://passport.twitch.tv/register", data=data)
print(a.status_code, a.text)

Однако в ответ получаю:

{
    "error":"Oops! We encountered an unexpected error. Please try again.",
    "errors":[
        "Oops! We encountered an unexpected error. Please try again."
    ],
    "error_code": 1002,
    "error_description": "failed to decode JSON"
}

Прошу помощи.


Ответы (1 шт):

Автор решения: Serg Bocharov

Измените a = requests.post("https://passport.twitch.tv/register", data=data) на a = requests.post("https://passport.twitch.tv/register", json=data), тогда модуль requests произведет сериализацию данных и добавит правильный Content-Type заголовок application/json. А вообще почитайте про типы заголовков и вообще работу запросов.

→ Ссылка