php-allegro-rest-api
php-allegro-rest-api copied to clipboard
Problem z pobraniem kategorii
Witam, na początek chciałbym pochwalić przejrzystość biblioteki :) Super pomysł.
Niestety nie wiem dlaczego mam jednak z nią problem podczas pobierania kategorii... Api zwraca następujący błąd, gdy wywołuję ApiTest.php:
{"errors":[{"code":"NotAcceptableException","message":"Not acceptable representation requested. Please check 'Accept' request header","details":null,"path":null,"userMessage":"The request contains incorrect data. Contact the author of the application."}]}
Oczywiście zmieniłem już na początku adres URL Api, gdyż zapisany w pliku allegroapi.io jest wyłączony. Wszystkie dane zostały wprowadzone. Listowanie produktów (które jest w dalszej części) działa. Niestety listowanie kategorii nie działa. Czy mogę prosić o wsparcie w rozwiązaniu tego problemu?
Pozdrawiam, Łukasz
Czy udało Ci się rozwiązać problem?
@mleplawy tak :) problem udało się dość szybko rozwiązać
@pokash a jak go rozwiązałeś? ja mam problem. swoją drogą działa Ci biblioteka poprawnie ? zmieniłem oczywiście URL api ale z dnia na dzień przestała działać
@mleplawy odświeżyłeś access token? Powinien być aktualizowany co 24 godziny, gdyż tyle jest ważny. Biblioteka działa poprawnie. Korzystam z niej w swoim module do PrestaShop. Wywoływanie kolejnych metod API wygląda tak: /sale/categories $this->api->sale->categories()->get($params)
, gdzie w zmiennej $params wstawiasz: $params=array('parent.id' => $category);
, zgodnie z dokumentacją:
parent.id | stringDefault: "954b95b6-43cf-4104-8354-dea4d9b10ddf"The ID of the category which children should be returned. If omitted, the list of main Allegro categories will be returned.
Tak samo robisz z pobieraniem parametrów: $category = Tools::getValue('id_category') ? Tools::getValue('id_category') : ''; $this->api->sale->categories($category)->parameters->get();
/sale/categories/{categoryId}/parameters
Mam nadzieję, że udało mi się poprawnie naświetlić czytanie i implementowanie biblioteki do RESTApi :)
Jeżeli będziesz miał jeszcze jakieś pytania, to pisz śmiało :)
Pozdrawiam, Łukasz
Dzięki bardzo za szybką odpowiedź mój problem jest niestety nieco inny a już przy samym generowaniu tokenu zwracany jest błąd
$api = new Api($clientId, $clientSecret, $apiKey, $url, null, null);
taki mam konstruktor $apiKey jest nullem bo wg allegro jest on od webapi a nie od restapi
@mleplawy nie do końca :) API Key = WebKey :) Definicja obiektu Api zaimplementowanego w Presta wygląda tak: $this->api = new Api( Configuration::get('PS_ALLEGRO_CLIENT_ID_KEY'), Configuration::get('PS_ALLEGRO_CLIENT_SECRET'), Configuration::get('PS_ALLEGRO_CLIENT_ID_KEY'), Configuration::get('PS_ALLEGRO_REDIRECT_URL').$token, null, null);
Jak widzisz PS_ALLEGRO_CLIENT_ID_KEY jest wpisany w dwóch miejscach (tam gdzie ma się znaleźć Client ID / klucz WebAPI). Obie zmienne muszą zostać zdefiniowane. Sprawdź czy to zadziała i daj znać :) jeżeli to nie to, to poszukamy innego rozwiązania.
Pozdrawiam, Łukasz
Dzięki za pomoc tak też próbowałem tj
$api = new Api($clientId, $clientSecret, $clientId, $url, null, null);
ale niestety to samo sprawdziłem dla pewności i ściągnąłem sobie z repo wersję która działała na 100% i nadal to samo zarejestrowałem nową aplikację i wpisałem jej dane
Na dole masz na pewno $_GET['code']? Bo wydaje się, że jest tam spacja...
Autoryzacja powinna odbywać się na takiej zasadzie: $authUri = $this->api->getAuthorizationUri(); header("Location: $authUri"); , a następnie: $response = $this->api->getNewAccessToken($code);
Pamiętaj, aby zaaplikować to w odpowiednim typie. U mnie masz kod ułożony pod programowanie obiektowe :)
Pozdrawiam, Łukasz
mam dokładnie jak ty zastanawiam się czy allegro mi IP nie zablokowało. `
<head>
<meta charset="UTF-8">
<title>dostepnosc</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<?php
echo "<center>";
session_start();
require_once 'Resource.php'; //classes
require_once 'Api.php'; //classes
require_once 'Commands.php'; //classes
$clientId = '6199ed38537e4XXXXXXXXXXXXXXXXXX;
$clientSecret = 'TJorw0P8SkKW69qEvTfRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXgt2';
$apiKey = $clientId;
$url = "http://10.0.1.132/aplikacje/dostepnosc/restAllegro.php";
$api = new Api($clientId, $clientSecret, $clientId, $url, null, null);
$code = $_GET['code'];
$ids = $_SESSION["id"];
$symbol = $_SESSION["symbol"];
// parameter needed for authorisation - returned by Allegro while two-phase auth method
if (strlen($code) < 3) { // run once - for authorization code passing to allegro
$authUri = $api->getAuthorizationUri();
echo $authUri . "
";
// IMPORTANT!!!!!
// You may have to run it once manually - uncoment the above line, copy from browser output
// paste & execute in browser being Loged in to allegro. It asks ( allegro web page ) You
// if You agree to run program named [ name_given_while_registration_process ]. You should
// probably agree ;-)
header("Location: $authUri");
exit;
}
// for my lazy character:
// define ('RESTAPI' , 'https://allegroapi.io');
// ### Getting new token ###
$response = $api->getNewAccessToken($code);
// # response contains json with your access_token and refresh_token
// Look how token looks like - just to see it, You might never know how it is....
echo $response;
echo "
";
$data2 = array(
'offerCriteria' =>
array(
0 =>
array(
'offers' =>
array(
0 =>
array(
'id' => $ids,
),
),
'type' => 'CONTAINS_OFFERS',
),
),
'publication' =>
array(
'action' => 'END',
),
);
echo "<br/>";
$response2 = $api->sale->commands()->offer_publication($data2);
echo $response2;
echo "USUNIĘTO aukcje " . $ids . " sprawdź czy aukcja zeminiła status<br/><a href='http://allegro.pl/i" . $ids . ".html'>" . $ids . "</a>";
echo "<h3><a href='http://10.0.1.132/aplikacje/dostepnosc/index.php?dostepnosc=" . $symbol . "'>wróć</a></h3>";
echo "</center>";
?>
</body>
`
Możliwe, że i tak może być. Prześlij zgłoszenie do Allegro, a dodatkowo otwórz wątek na GitHub. Powinni pomóc rozwiązać ten problem. Dodatkowo możesz spróbować na jakimś zewnętrznym serwerze to przetestować, czy będzie działać :)
założyłem już wątek na githubie allegrowym, https://github.com/allegro/allegro-api/issues/2661 sprawdziłem przed chwilą na innym IP problem jest ten sam