allegro / allegro-api

Issue tracker and wiki for Allegro REST API
https://developer.allegro.pl/
217 stars 39 forks source link

Odświeżanie tokena autoryzacyjnego #9045

Open studiowizjo opened 5 months ago

studiowizjo commented 5 months ago

Autoryzując się, korzystając z endpointu: https://allegro.pl/auth/oauth/device?client_id=XXX otrzymujemy zwrotnie m.in:

Zaraz po zautoryzowaniu wykonujemy odswiezenie tokena i zwrotnie otrzymujemy nowy "access_token" oraz "refresh_token". Zapisujemy te dane w miejsce poprzednich i wykonując kolejne zapytania korzystamy już z tych nowych danych.

Problem w tym, że po upływie ok. 60s dane te przestają byc wazne i wykonujac zapytanie otrzymujemy blad: Invalid refresh token. Co jest przyczyna, skoro token zostal odswiezony?

Przed uplywem 60s mozemy np. kilkukrotnie wykonac odswiezenie kazdorazwo otrzymujac nowe dane i wszystko dziala prawidlowo. Czy po odswiezeniu waznosc nie powinna byc na 3 miesiace?

MartaNowaczyk commented 5 months ago

Wygląda na to, że byt często odświeżasz tokeny. Pamiętaj, że gdy tworzysz nową parę - access token (ważny jest kolejne 12h) oraz refresh token (ważny kolejne 3 miesiące) - dotychczasowe stają się nieważne i nie możesz już ich użyć odpytując zasoby naszego API. Dokładniej opisaliśmy to w tej części naszego poradnika.

studiowizjo commented 5 months ago

Jedynie testowo odswiezalem z taka czestotliwoscia i wg mnie te 60s jest tutaj kluczowe poniewaz w poradniku jest mowa:

Token taki jest ważny przez 3 miesiące, po pierwszym odświeżeniu możesz z niego korzystać jeszcze przez 60 sekund.

Dodatkowo mozna bylo w czasie 60s wielokrotnie z sukcesem odswiezyc, ale po uplywie tego czasu juz nie, tak wiec to nie wydaje sie przyczyna.

Poza tym skoro w jednym endpoincie odswiezam tak naprawde obydwa tokeny, to nie ma chyba znaczenia roznica czasu ich waznosci i tak czy inaczej musze odswiezac co tyle ile waznosci ma najkrotszy okres waznosci tokena, a wiec ciut krocej niz 12h? Prosba o opisanie jeszcze wlasciwego flow, czy dobrze to rozumiem.

MartaNowaczyk commented 5 months ago

Tak, powinieneś odświeżać token co 12h - dwa razy na dobę. Poza tym refresh token zawsze jest ważny przez 3 miesiące i po pierwszym odświeżeniu możesz z niego korzystać jeszcze przez 60 sekund. Te 60 sekund dodatkowego buforu wprowadziliśmy na wypadek, gdyby występowały problemy np. po stronie Twojej aplikacji, czy też nieoczekiwane problemy po naszej stronie.

studiowizjo commented 5 months ago

Jesli dobrze rozumiem, to po odswiezeniu powinienem we wszystkich kolejnych zapytaniach moc korzystac zarowno z nowego access_tokena jak i refresh_tokena i stare nie sa juz istotne, ale w razie czego refresh_token jest wazny jeszcze przez 60s, tak wiec mam 1 access_token i 2 mozliwe refresh_tokeny do wykorzystania?

Niestety nie sprawdza sie to i tak jak wspominalem, po odswiezeniu otrzymujac nowa pare i probujac skorzystac z niej, po 60s jest ona niewazna i pojawia sie komunikat Invalid refresh token. Dlaczego, skoro dopiero co zostal wygenerowany i powinien byc wazny przez 3 miesiace?

MartaNowaczyk commented 5 months ago

Jeśli otrzymałeś nowy powinieneś skorzystać z nowego, a widocznie tak nie jest i korzystasz z poprzedniego mimo, że już wcześniej go użyłeś. Prześlij proszę pełen request i response przez nasz formularz kontaktowy. W zgłoszeniu dopisz GitHub #9045, sprawdzę to.

studiowizjo commented 5 months ago

Wyslane w 3 wiadomosciach odpowiednio oznaczonych, poniewaz limit w formularzu nie pozwalal na wyslanie wszystkiego naraz.

studiowizjo commented 5 months ago

Przypominam sie w temacie. Czy juz cos wiadomo?

MartaNowaczyk commented 5 months ago

Niestety nie dotarło do mnie to zgłoszenie. Może Pan się w nim przypomnieć z prośbą o przekazanie do zespołu API?

studiowizjo commented 5 months ago

Wyslane.

MartaNowaczyk commented 5 months ago

Przekazano mi Twoje dane. Na ten moment widzę, że przesłałeś mi inny przypadek błędu niż "Invalid refresh token" w podanym przypadku otrzymujesz błąd "Full authentication is required to access this resource" tu problem jest raczej z przekazywaniem przez Ciebie tokena. Sprawdzę jeszcze w logach konkretny przypadek z błędem "Invalid refresh token" i dam Ci znać jeśli uda mi się to namierzyć. Rozumiem, że operacje są na tym samym userze?

studiowizjo commented 5 months ago

Tak, na tym samym

MartaNowaczyk commented 5 months ago

Niestety nie znalazłam przypadku z "invalid refresh token". Jeśli możesz podeślij w tej samej korespondencji co poprzednio przykład, co po kolei wysyłasz jak dostajesz wspomniany błąd. Jeśli chodzi o ten przypadek co podesłałeś przez formularz to zwróć uwagę, że w nagłówku Authorization przesyłasz Basic zamiast Bearer.

stale[bot] commented 5 months ago

W tym wątku nie pojawiła się żadna nowa odpowiedź w ciągu 7 dni, dlatego automatycznie oznaczamy go jako przeterminowany. Jeśli w ciągu kolejnych 7 dni nie pojawi się żadna odpowiedź, wątek zostanie zamknięty. Dziękujemy za zaangażowanie w dyskusję i zachęcamy Cię do wypełnienia ankiety dotyczącej naszego wsparcia na forum.


There was no new reply in this thread within 7 days, therefore, we automatically marked it as expired. If no response is received within the next 7 days, this thread will be closed. Thank you for engaging in the discussion. We encourage you to complete our forum support survey.