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

    Chyba při implementaci

    Naplánováno Připnuto Uzamknuto Přesunuto OAuth přihlášení přes Seznam
    11 Příspěvky 3 Přispěvatelé 8.5k Zobrazení 1 Sleduji
    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.
    • D Offline
      dockal.dev
      naposledy upravil Administrátor

      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.

      1 odpověď Poslední odpověď Odpovědět Citovat 0
      • 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.

        D 1 odpověď Poslední odpověď Odpovědět Citovat 0
        • D 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
            • D 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 D 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 D 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
                    • D 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
                      • D 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
                        • D Offline
                          dockal.dev
                          naposledy upravil

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

                          1 odpověď Poslední odpověď Odpovědět Citovat 0

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Registrovat Přihlásit se
                          • První příspěvek
                            Poslední příspěvek