Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak obecnie można pobierać zawartość aukcji Allegro?
Forum PHP.pl > Forum > Przedszkole
tryme
Cześć,

Jakiś czas temu pobierałem zawartość aukcji Allegro z wykorzystaniem CURL lecz od jakiegoś czasu nie mogę pobrać w żaden sposób zawartości serwisu, gdyż wyświetla mi się komunikat "Please enable JS and disable any ad blocker".

Czy jest jakiś prosty sposób, aby sobie z tym poradzić?
emillo91
Najlepiej jak skorzystasz z tego API udostępnionego przez Allegro. Nie korzystałem więc nie pokieruję Cię dalej.
tryme
Czytałem o tym, ale wolałbym pobrać dane tradycyjnie tym bardziej, że w najbliższym czasie dostęp do API będzie powoli ograniczany.
Tomplus
@tryme
gdzie czytałeś o tym że dostęp do API będzie ograniczony?

Więcej na temat API przeczytasz na ich stronie:
https://developer.allegro.pl/
sazian
Nie doczytałeś dokładnie,
stare API soap/wsdl jest wyłączane o ile jeszcze działa i jest zastępowane nowym REST API
emillo91
Co do tego komunikatu błędu to gdzieś w Internecie piszą, że jest to spowodowane przez mechanizm captcha (js challenge), chroniący przed scrapingiem.
Tomplus
@sazian
Tak, to już od kilku lat Allegro wycofuje, myślałem że już tego nie ma.
Dlatego myślałem że nowe API chcą wycofywać, a nie ma żadnych informacji z ich strony.
tryme
Próbuję szczęścia z API REST, ale coś mi nie wychodzi closedeyes.gif Czy możecie rzucić okiem na mój kod, którym chciałbym pobrać moje oferty?

  1. <?php
  2.  
  3. function getAccessToken(): String
  4. {
  5. $authUrl = "https://allegro.pl/auth/oauth/token?grant_type=client_credentials";
  6. $clientId = "...";
  7. $clientSecret = "...";
  8.  
  9. $ch = curl_init($authUrl);
  10.  
  11. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  12. curl_setopt($ch, CURLOPT_USERNAME, $clientId);
  13. curl_setopt($ch, CURLOPT_PASSWORD, $clientSecret);
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  15.  
  16. $tokenResult = curl_exec($ch);
  17. $resultCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  18. curl_close($ch);
  19.  
  20. if ($tokenResult === false || $resultCode !== 200) {
  21. exit ("Something went wrong!");
  22. }
  23.  
  24. $tokenObject = json_decode($tokenResult);
  25.  
  26. return $tokenObject->access_token;
  27. }
  28.  
  29.  
  30. function getOffers(String $token): stdClass
  31. {
  32. $url = "https://api.allegro.pl/sale/offers";
  33.  
  34. $ch = curl_init($url);
  35.  
  36. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  37. curl_setopt($ch, CURLOPT_HTTPHEADER, [
  38. "Authorization: Bearer $token",
  39. "Accept: application/vnd.allegro.public.v1+json"
  40. ]);
  41.  
  42. $result = curl_exec($ch);
  43. $resultCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  44. curl_close($ch);
  45.  
  46. if ($result === false || $resultCode !== 200) {
  47. exit ("Something went wrong");
  48. }
  49.  
  50. $offers = json_decode($result);
  51.  
  52. return $offers;
  53. }
  54.  
  55. function main_4()
  56. {
  57. $token = getAccessToken();
  58. var_dump(getOffers($token));
  59. }
  60.  
  61. main_4();
  62.  
  63. ?>
Pyton_000
A błędy to mamy sobie wywróżyć czy jak?
tryme
Otrzymuję następujący błąd:

Cytat
Response status code: 403 {"errors":[{"code":"AccessDenied","message":"Access is denied","details":null,"path":null,"userMessage":"Access denied. Contact the author of the application."}]}


Powiązałem aplikację z Allegro lecz nadal widzę błąd.
gino
Z tego co pamiętam (mogę się mylić bo dawno nie robiłem nic z allegro) że przez zasób sale/offers/ID_twojejoferty pobierasz konkretną ofertę jeśli jesteś jej właścicielem? Do listowania Twoich ofert nie jest przypadkiem /offers/listing? Tak mi się coś kojarzy, ale jak pisałem mogę się mylić.
Pyton_000
Ewidentnie brak uprawnień. Możliwe że klucz API który wygenerowałeś nie ma uprawnień do listingu ofert: "allegro:api:sale:offers:read"
https://developer.allegro.pl/documentation/...hOffersUsingGET
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.