Fórum pro vývojáře
    • Kategorie
    • Nepřečtené
    • Nejnovější
    • Populární
    • World
    • Přihlásit se

    Chyba při implementaci

    Scheduled Připnuto Uzamknuto Přesunuto OAuth přihlášení přes Seznam
    11 Příspěvky 3 Přispěvatelé 43 Zobrazení
    Načítání více příspěvků
    • Od nejstarších po nejnovější
    • Od nejnovějších po nejstarší
    • S nejvíce hlasy
    Odpovědět
    • Odpovědět jako Téma
    Přihlásit se pro odpověď
    Toto téma bylo odstraněno. Jen uživatelé s oprávněním správy témat ho mohou vidět.
    • Ondřej ŽáraO Offline
      Ondřej Žára
      naposledy upravil

      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.devD 1 odpověď Poslední odpověď Odpovědět Citovat 0
      • dockal.devD Offline
        dockal.dev @Ondřej Žára
        naposledy upravil Administrátor

        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 0O 1 odpověď Poslední odpověď Odpovědět Citovat 0
        • Ondřej Žára 0O Offline
          Ondřej Žára 0 @dockal.dev
          naposledy upravil

          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.

          1 odpověď Poslední odpověď Odpovědět Citovat 0
          • dockal.devD Offline
            dockal.dev
            naposledy upravil

            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 ŽáraO 1 odpověď Poslední odpověď Odpovědět Citovat 0
            • Ondřej ŽáraO Offline
              Ondřej Žára @dockal.dev
              naposledy upravil

              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 ŽáraO dockal.devD 2 odpovědí Poslední odpověď Odpovědět Citovat 0
              • Ondřej ŽáraO Offline
                Ondřej Žára @Ondřej Žára
                naposledy upravil

                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 ŽáraO dockal.devD 2 odpovědí Poslední odpověď Odpovědět Citovat 0
                • Ondřej ŽáraO Offline
                  Ondřej Žára @Ondřej Žára
                  naposledy upravil Administrátor

                  Pro uplnost: JSON data posilana do /token maji vypadat:

                  {
                    "redirect_uri": "http://localhost:3000/",
                    ...
                  }
                  
                  1 odpověď Poslední odpověď Odpovědět Citovat 0
                  • dockal.devD Offline
                    dockal.dev @Ondřej Žára
                    naposledy upravil

                    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 🙂

                    1 odpověď Poslední odpověď Odpovědět Citovat 0
                    • dockal.devD Offline
                      dockal.dev @Ondřej Žára
                      naposledy upravil

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

                      1 odpověď Poslední odpověď Odpovědět Citovat 0
                      • dockal.devD Offline
                        dockal.dev
                        naposledy upravil

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

                        1 odpověď Poslední odpověď Odpovědět Citovat 0
                        • First post
                          Last post