Instagram OAuth nem fogadja el a küldött JSON adatot

Sziasztok,

Egy Flask alapú weboldalon dolgozom, ami majd a jövőben az Instagram API-n keresztül fog lekérni adatokat, ezért szükséges hogy azonosítsam a felhasználókat OAuth2 segítségével. Elvileg nem bonyolult a folyamat: https://www.instagram.com/developer/authentication/ de a harmadik lépésnél nem találom a Python megoldást.

Az ide vonatkozó kódrészletem így néz ki:


@app.route('/callback')
def callback():
    code = request.args.get('code')

    payload = {"client_id": client_id,
    "client_secret": client_secret,
    "grant_type": "authorization_code",
    "redirect_uri": redirect_uri,
    "code": code}

    r = requests.post('https://api.instagram.com/oauth/access_token', json=payload)
    return r.text

A válasz pedig ez a hibaüzenet:


{"error_type": "OAuthException", "code": 400, "error_message": "You must provide a client_id"}

A

client_id

változó fentebb definiálva van, a

code

változó is működik. Valószínűleg a

requests.post()

függvényemmel van valami gond, de nem igazán találom, hogy mi lehet az. Az is kizárt, hogy a

client_id

tartalma hibásan van megadva, mert az OAuth egy korábbi fázisában ugyanez a változó még működik.
Az instagram leírásában egy

curl -F

requestet ad meg példaként.
Azt gondolom, hogy az én

requests.post()

függvényem ezzel azonos eredményt ad, de könnyen lehet, hogy ebben tévedek.

Előre is köszönöm, ha valakinek van ötlete.

Hozzászólások

Azt még hozzáteszem, hogy kb ezt kellene elküldenem csak Pythonban ahhoz hogy jó választ kapjak:


curl -F 'client_id=CLIENT_ID' \
    -F 'client_secret=CLIENT_SECRET' \
    -F 'grant_type=authorization_code' \
    -F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
    -F 'code=CODE' \
    https://api.instagram.com/oauth/access_token

Nem JSON-t hanem Dictionary-t kell küldeni és akkor működik.
json = payload helyett data = payload