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

    Chyba 406

    Scheduled Připnuto Uzamknuto Přesunuto OAuth přihlášení přes Seznam
    15 Příspěvky 6 Přispěvatelé 90 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.
    • Kytary CZK Offline
      Kytary CZ
      naposledy upravil

      Dobry den.
      Pri kroku "vymena kodu za token" dostavam chybu 406 ze serveru.

      Content-Type: "application/json; charset=utf-8"
      {
      "grant_type":"authorization code",
      "code":kod z prvniho kroku,
      "redirect_uri":"localhost:9999",
      "client_id": client_id od seznamu,
      "client_secret": client_secret od seznamu
      }

      V odpovedi mam StatusCode == NotAcceptable a StatusDescription == "client doesn't accept application/json"
      Kde by mohl byt problem?

      1 odpověď Poslední odpověď Odpovědět Citovat 7
      • Lenka Philippová 0L Offline
        Lenka Philippová 0
        naposledy upravil

        Dobrý den,

        zkuste pridat hlavicku Accept: application/json

        Kytary CZK 1 odpověď Poslední odpověď Odpovědět Citovat 0
        • Kytary CZK Offline
          Kytary CZ @Lenka Philippová 0
          naposledy upravil

          Dobry den,
          error 406 jsem jiz asi vyresil, ale ted mam problem, ze mi server vraci error 500.

          1 odpověď Poslední odpověď Odpovědět Citovat 0
          • Kytary CZK Offline
            Kytary CZ
            naposledy upravil

            Error 406 jsem vyresil tak, ze jsem JSON prevedl na string a obalil jsem ho hranatymi zavorkami "[...]"

            Jan-Matej LopataJ 1 odpověď Poslední odpověď Odpovědět Citovat 0
            • Jan-Matej LopataJ Offline
              Jan-Matej Lopata @Kytary CZ
              naposledy upravil

              to zrejme nebude uplne dobre

              1 odpověď Poslední odpověď Odpovědět Citovat 0
              • Jan-Matej LopataJ Offline
                Jan-Matej Lopata
                naposledy upravil

                Zkuste neco jako:

                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:9999",
                "client_secret": "xxx",
                "client_id": "xxx"
                }'
                
                Kytary CZK 1 odpověď Poslední odpověď Odpovědět Citovat 0
                • Kytary CZK Offline
                  Kytary CZ @Jan-Matej Lopata
                  naposledy upravil

                  Dobry den.
                  Pri pouziti Invoke-Webrequest (Powershell prostredi).

                  $body = 
                  '[{ 
                  "grant_type":"authorization_code", 
                  "code":"x", 
                  "redirect_uri":"http://localhost:9999/Operations/LoginSeznam/", 
                  "client_secret":"xx", 
                  "client_id":"xxx"
                  }]'
                  
                  $content_type="application/json"
                  
                  Invoke-WebRequest -Uri 'https://login.szn.cz/api/v1/oauth/token' -Method POST -Body ($body|ConvertTo-Json) -ContentType $content_type
                  

                  Odpověd serveru:
                  "Invoke-WebRequest :
                  Chyba 500 – Chyba serveru
                  Při zpracování požadované stránky došlo na straně serveru k chybě.
                  Přejít na přihlášení
                  Copyright © 1996–2022 Seznam.cz, a.s."

                  Zkousel jsem take

                  curl -X POST https://login.szn.cz/api/v1/oauth/token -H 'Content-Type: application/json' -d '{"grant_type":"authorization_code","code":"xx",redirect_uri":"http://localhost:9999/Operations/LoginSeznam/","client_secret":"xxx","client_id":"xxx"}'
                  

                  to vraci
                  {"error": "unsupported_grant_type", "redirect": true}

                  Nasel jsem v diskuznim foru jeden prispevek ( https://napoveda.seznam.cz/forum/threads/159789/1 ), kde to vypada, ze ma podobny problem a take v "code" mam znak "|", ale nevim, jestli to je ono nebo jak tento problem vyresit.

                  1 odpověď Poslední odpověď Odpovědět Citovat 0
                  • Ondřej ŽáraO Offline
                    Ondřej Žára
                    naposledy upravil

                    Hezky den,

                    ad powershell: neumim powershell, ale vim, ze takto to fungovat zcela jiste nebude. Hranate zavorky v JSONu znamenaji pole, nic takoveho se posilat nema.

                    ad CURL: tato varianta vypada slibneji, nicmene zde poslana ukazka neni korektni (chybi uvozovky pred redirect_uri), takze na jejim zaklade neumim problem zreprodukovat. Zkuste prosim poslat presne to CURL volani, co zkousite (samozrejme bez client_secret).

                    Kytary CZK 1 odpověď Poslední odpověď Odpovědět Citovat 0
                    • Kytary CZK Offline
                      Kytary CZ @Ondřej Žára
                      naposledy upravil

                      Request posilam s uvozovkama u redirect_uri. Omylem jsem je umazal, kdyz jsem menil hodnotu pro "code" na "x".

                      Toto:

                      curl -X POST https://login.szn.cz/api/v1/oauth/token -H 'Content-Type: application/json' -d '{"grant_type":"authorization_code","code":"x","redirect_uri":"http://localhost:9999/Operations/LoginSeznam/","client_secret":"xx","client_id":"xxx"}'
                      

                      Vraci:

                      {"error": "unsupported_grant_type", "redirect": true}curl: (6) Could not resolve host: application
                      
                      Ondřej ŽáraO 1 odpověď Poslední odpověď Odpovědět Citovat 0
                      • Ondřej ŽáraO Offline
                        Ondřej Žára @Kytary CZ
                        naposledy upravil

                        Napis "Could not resolve host: application" je silne podezrely; to vypada, ze poslana commandline se naparsuje nejak podivne (z application/json je hostname pro curl??) a tim padem se ani spravny Content-Type nedostane na backend.

                        Pokud tento prikaz posilate do windows command promptu, delate to spatne: v nem nema apostrof ten vyznam, ktery ocekavate (https://superuser.com/questions/324278/how-to-make-windows-command-prompt-treat-single-quote-as-though-it-is-a-double-q). Zkuste jej vlozit do nejakeho linuxoveho shellu.

                        Pokud trvate na windows command promptu, bude nutne parametry ohranicovat uvozovkami (nikoliv apostrofem). Pak ale nastane problem s dvojim escapovanim JSON dat.

                        TL;DR: pokud mate k dispozici jen windows command prompt, nezkousejte CURL. Pouzijte bud plnohodnotny shell (+curl), nebo plnohodnotny programovaci jazyk (PHP, Python, ...).

                        1 odpověď Poslední odpověď Odpovědět Citovat 0
                        • Jaroslav MalikJ Offline
                          Jaroslav Malik
                          naposledy upravil

                          dnes jsem řešil podobný problém, vracelo mi chybu 406 "client doesn't accept application/json", nakonec mi pomohlo v hlavičce dotazu uvést 'Accept' => '/'

                          Kytary CZK 1 odpověď Poslední odpověď Odpovědět Citovat 0
                          • Kytary CZK Offline
                            Kytary CZ @Jaroslav Malik
                            naposledy upravil

                            To bylo ono!
                            Diky moc, uz jsem si z toho malem vytrhal vlasy 🙂

                            Vedel bys proc to tak je?
                            Cekal bych, ze kdyz tam poslu "Accept": "application/json", tak to bude fungovat, ale nic.

                            Pro info pracuji na Vidlich v ASP.NET.

                            1 odpověď Poslední odpověď Odpovědět Citovat 0
                            • Vojtěch JarošV Offline
                              Vojtěch Jaroš
                              naposledy upravil

                              Asi tomu rozumim.
                              Seznam server zpet posila JSON, ale spatne dava do content typu "text/html" misto "application/json" a proto server neumi odpovedet, protoze ja ze sveho requestu pozaduji "application/json", jak ma Seznam v dokumentaci, ale seznam server zadnou takovou odpoved dat nemuze, protoze podle headeru je schopen posilat pouze text/html.

                              Opravte me, jestli se pletu.

                              Ondřej ŽáraO 1 odpověď Poslední odpověď Odpovědět Citovat 0
                              • Ondřej ŽáraO Offline
                                Ondřej Žára @Vojtěch Jaroš
                                naposledy upravil

                                Dobry den,

                                muzete ukazat celou obdrzenou odpoved, vcetne hlavicek, aby z toho bylo patrne, ze je to JSON ale v Content-type je "text/html"? Jsem pevne presvedcen o tom, ze JSON odpoved s daty oauth tokenu ma Content-type: application/json.

                                Vojtěch JarošV 1 odpověď Poslední odpověď Odpovědět Citovat 0
                                • Vojtěch JarošV Offline
                                  Vojtěch Jaroš @Ondřej Žára
                                  naposledy upravil

                                  Máte pravdu. Content-type je v odpovědi application/json.
                                  Nedokážu říct, proč to funguje s Accept:"/", ale s Accept:"application/json" to vrací 406.

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