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

    Chyba 406

    Naplánováno Připnuto Uzamknuto Přesunuto OAuth přihlášení přes Seznam
    15 Příspěvky 6 Přispěvatelé 1.7k 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.
    • K 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
      • L Offline
        Lenka Philippová 0
        naposledy upravil

        Dobrý den,

        zkuste pridat hlavicku Accept: application/json

        K 1 odpověď Poslední odpověď Odpovědět Citovat 0
        • K 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
          • K Offline
            Kytary CZ
            naposledy upravil

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

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

              to zrejme nebude uplne dobre

              1 odpověď Poslední odpověď Odpovědět Citovat 0
              • J 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"
                }'
                
                K 1 odpověď Poslední odpověď Odpovědět Citovat 0
                • K 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).

                    K 1 odpověď Poslední odpověď Odpovědět Citovat 0
                    • K 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
                        • J 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' => '/'

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

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

                                  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