allegro / allegro-api

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

Pobranie danych odnośnie sprzedaży w allegro #3175

Closed PaVeN0 closed 4 years ago

PaVeN0 commented 4 years ago

Dzień dobry, zajmuje się obecnie wdrożeniem funkcji która pozwoli na pobranie przez mojego klienta, który sprzedaje towary na allegro, listy zamówień które zostały sprzedane z ostatniego okresu. Z dokumentacji wiem że jest endpoint który pozwala na wyjęcie takich danych jednak mam zwrotkę 403 próbując pobrać te dane po autoryzacji jako Client_credentials. Czy jest możliwość wyjęcia zamówień z konta które jest autoryzowane w API?

Dodatkowo próbowałem też opcji z Authorization Code tylko z tego co czytam musze najpierw przygotować przycisk w mojej aplikacji który wyśle informacje do Allegro po czym otrzymam "code" który użyje przy autoryzacji po której otrzymam token i ten token będę mógł użyć do wyjęcia danych o zamówieniach. Dobrze to rozumiem?

Trochę dużo zamieszania z tym. Nie da się tego zrobić inaczej? Prosiłbym o przykład w kodzie na połączenie bo dokumentacje przejrzałem już kilka razy i nie za bardzo wiem jak pójść dalej...

PrzemyslawLukanowski commented 4 years ago

Tak, jest to możliwe. Sposób, który opisałeś jest prawidłowy i pozwoli na operacje tego typu. Ten typ autoryzacji opisaliśmy w naszym poradniku. Wątek generowania tokena np. w PHP, przewinął się w poniższych wątkach:

2306

708

226

2046

Być może wśród nich znajdziesz wskazówki, które rozwieją Twoje wątpliwości.

PaVeN0 commented 4 years ago

Dokumentacja ma dużo wątków które są niejasne lub napisane aby były.. Marnujemy czas na zrozumienie jak działa połączenie w momencie gdy osoby odpowiedzialne za API wrzucają linki do dokumentacji. Jakoś ogarnąłem przekierowanie robie testowo po linku wpisując go w przeglądarkę.

LesiuNOL commented 6 months ago

Czemu podczas próby pobrania ofert "/sale/offers" wyrzuca mi błąd "AccessDenied"? Czymuszę podać dodatkowe parametry?

array(1) { ["errors"]=> array(1) { [0]=> array(5) { ["code"]=> string(12) "AccessDenied" ["message"]=> string(16) "Access is denied" ["details"]=> NULL ["path"]=> NULL ["userMessage"]=> string(36) "No access to the specified resource." } } }

PrzemyslawLukanowski commented 6 months ago

@LesiuNOL Upewnij się, że posiadasz token wygenerowany w ramach code lub device flow i aplikacja posiada zakres allegro:api:sale:offers:read. Jeśli wszystko wykonałeś poprawnie, ale mimo to zwracamy nadal błąd, podaj proszę przykładowe trace-id.

LesiuNOL commented 6 months ago

Już jest wszystko OK. Faktycznie błąd był z autoryzacją "code". Dziękuję.

Pozdrawiam, Bartłomiej Leśniewski

e-mail: @.***

śr., 24 kwi 2024 o 12:44 PrzemyslawLukanowski @.***> napisał(a):

@LesiuNOL https://github.com/LesiuNOL Upewnij się, że posiadasz token wygenerowany w ramach code https://developer.allegro.pl/tutorials/uwierzytelnianie-i-autoryzacja-zlq9e75GdIR#authorization-code-flow lub device https://developer.allegro.pl/tutorials/uwierzytelnianie-i-autoryzacja-zlq9e75GdIR#device-flow flow i aplikacja posiada zakres allegro:api:sale:offers:read. Jeśli wszystko wykonałeś poprawnie, ale mimo to zwracamy nadal błąd, podaj proszę przykładowe trace-id.

— Reply to this email directly, view it on GitHub https://github.com/allegro/allegro-api/issues/3175#issuecomment-2074655104, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALKWG6CK6BKB4SIU72BBSITY66EIZAVCNFSM4MZSOV62U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TEMBXGQ3DKNJRGA2A . You are receiving this because you were mentioned.Message ID: @.***>

LesiuNOL commented 6 months ago

Pobierając dane o wystawionych ofertach za pomocą "/sale/offers?limit=1000&offset=0&publication.status=ACTIVE" chciałbym uzyskać numer ISBN (produkty są w kategorii książki). W jaki sposób mogę pobrać dodatkowe informacje oferty, czy trzeba dołączyć jakiś dodatkowy atrybut przy pobieraniu danych przez API?

PrzemyslawLukanowski commented 6 months ago

Znając ID oferty, musisz pobrać jej pełne dane za pomocą GET /sale/product-offers/{offerID}. Informację o parametrach zwracamy w sekcji parameters, a ID ISBN to 245669.

LesiuNOL commented 6 months ago

Dziękuję za odpowiedź, udało mi się wczoraj do tego dotrzeć. :) Jednak zastanawia mnie kolejna rzecz. Token jest jednorazowy. Gdy wywołam endpoint "/sale/offers", aby pobrać do tablicy ID ofert to token traci ważność, jednak w tym samym skrypcie chciałbym pobrać informację o ISBN za pomocą endpoint "/sale/product-offers/{offer_id}". Czy jest jakaś opcja, aby uzyskać nowy token w locie, bądź przedłużyć ważność/odświeżyć obecny?

Pozdrawiam, Bartłomiej Leśniewski

tel. 733-501-781 e-mail: @.***

czw., 25 kwi 2024 o 07:24 PrzemyslawLukanowski @.***> napisał(a):

Znając ID oferty, musisz pobrać jej pełne dane za pomocą GET /sale/product-offers/{offerID} https://developer.allegro.pl/documentation#operation/getProductOffer. Informację o parametrach zwracamy w sekcji parameters, a ID ISBN to 245669.

— Reply to this email directly, view it on GitHub https://github.com/allegro/allegro-api/issues/3175#issuecomment-2076389320, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALKWG6HXV7HJFNT2FUTZXETY7CHSBAVCNFSM4MZSOV62U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TEMBXGYZTQOJTGIYA . You are receiving this because you were mentioned.Message ID: @.***>

PrzemyslawLukanowski commented 6 months ago

Access token jest ważny przez 12 godzin, w tym okresie możesz wykonywać za jego pomocą wiele operacji do naszych zasobów. Przed upływem tego czasu możesz za pomocą refresh tokena (który otrzymałeś wraz z access tokenem) wygenerować nową parę access token (który jest ważny kolejne 12 godzin) oraz refresh token (którego użyjesz, aby ponownie wygenerować nową parę). Więcej na ten temat przeczytasz w tym punkcie naszego poradnika.

PrzemyslawLukanowski commented 6 months ago

Kod, który przekazujesz w parametrze "code", jest ważny 10 sekund oraz jest jednorazowego użytku - wygląda na to, że ten czas minął lub kod został już wykorzystany wcześniej.

LesiuNOL commented 6 months ago

Co prawda usunąłem już to pytanie (nie widziałem odpowiedzi), bo sobie poradziłem. Dziwnym trafem przeniosłem funkcję do klasy PHP i po wywołaniu wszystko działa. Może dochodziły jakieś błędne parametry po stronie WordPress. Nie wiem. :)

PrzemyslawLukanowski commented 6 months ago

Dziękuję za odpowiedź, cieszę się, że udało się rozwiązać problem :)