Fórum nápovědy

Seznam

Chyba při implementaci

dockal.dev

31.10.2021 v 22:35

Dobrý den,
chtěl bych implementovat Seznam přihlášení, ale narážim na problém se získáním access tokenu z "code"

Někdy dostanu chybu hned po vygenerování kodu
{
"message": "ticket expired",
"status": 466
}

a někdy zase
{"error": "invalid_grant"}

Děkuji za reakci.

Ondřej Žára • Webmaster Guru

1.11.2021 v 10:31

Hezky den,

"ticket expired" znamena, ze jste se pokusil ziskat token prilis pozde. Platnost jednorazoveho kodu je casove vyznamne omezena (na cca 10-15 vterin).

Chyba "invalid_grant" muze byt zpusobena vice vecmi - idealni by bylo, kdybyste mohl ukazat cely pozadavek, co posilate (samozrejme s cenzurovanym client_id a client_secret) a my to overime.

dockal.dev reagoval na příspěvek od Ondřej Žára

1.11.2021 v 23:12

Request je vygenerovaný postmanem

curl --location --request POST 'https://login.szn.cz/api/v1/oauth/token' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "authorization_code",
"code": "xx",
"redirect_uri": "http://localhost",
"client_secret": "xxx",
"client_id": "xxx"
}'

první odpověď je invalid_grant a po cca 15s je ticket expired

Díky

Ondřej Žára reagoval na příspěvek od dockal.dev

3.11.2021 v 10:24

Dobry den,

prijde mi, ze problem je ne-identicke redirect_uri v pozadavcich na /auth a /token. Tyto retezce musi byt stejne -a jestli se divam do spravneho logu, tak v jednom pripade jej zadavate s lomitkem na konci a ve druhem bez.

dockal.dev

17.11.2021 v 2:08

Dobrý den, zkusil jsem snad všechny ruzný možnosti, stále stejný problém. {"error": "invalid_grant"}

Nemůžete do dokumentace přidat funkční example ? Už prakticky netuším co dělám špatně.

Díky

Ondřej Žára • Webmaster Guru reagoval na příspěvek od dockal.dev

18.11.2021 v 9:37

Dobry den,

kdyz pisete "vsechny ruzny moznosti", co konkretne tim myslite? Spravne by mela existovat presne *jedna* hodnota redirect_uri, kterou pouzijete na trech mistech. Za prve v registraci aplikace na vyvojari.seznam.cz, za druhe jako parametr pri presmerovani na /auth, za treti jako parametr pri volani /token. Delate to tak? A s jakou hodnotou redirect_uri?

Ondřej Žára • Webmaster Guru reagoval na příspěvek od Ondřej Žára

18.11.2021 v 9:43

Podival jsem se jeste do logu na vas problem. Hodnotu redirect_uri (mam ted na mysli metodu /token) posilate url-enkodovanou, coz je chybne.

Fakticky pak selze porovnani "http://localhost:3000/" (to jste poslal do /auth) vs. "http%3A%2F%2Flocalhost%3A3000" (to jste poslal do /token).

Data je nutna escapovat s ohledem na pouzitou serializaci. Kdyz serializujete algoritmem "application/x-www-form-urlencoded" (tj. dvojice klic=hodnota), pak musite provadet url-enkodovani. Kdyz serializujete algoritmem JSON, pak musite provadet escapovani specificke pro JSON (a zadne jine).

Ondřej Žára • Webmaster Guru reagoval na příspěvek od Ondřej Žára

18.11.2021 v 9:48

Pro uplnost: JSON data posilana do /token maji vypadat:
{
"redirect_uri": "http://localhost:3000/",
...
}

dockal.dev reagoval na příspěvek od Ondřej Žára

21.11.2021 v 13:47

Dobrý den, tím myslím že jsem zkoušel více variant url, s lomítkem, bez lomítka, enkodovanou a neenkodovanou

Existuje jen jedna hodnota pro redirect ? V nastavení jde povolit více :)

dockal.dev reagoval na příspěvek od Ondřej Žára

21.11.2021 v 13:48

Zkoušel jsem více variant (ve stejný čas, určite to v logu je videt), zkusím tedy znova.

dockal.dev

21.11.2021 v 16:01

Tak už jsem to rozjel, díky za pomoc! :)

Nový dotaz

Přiložené přílohy

    Zbývá 12MB (z 12MB)

    Chyba při implementaci

    Přiložené přílohy

      Zbývá 12MB (z 12MB)