Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem z pobraniem kategorii #19

Open
pokash opened this issue Nov 19, 2019 · 11 comments
Open

Problem z pobraniem kategorii #19

pokash opened this issue Nov 19, 2019 · 11 comments

Comments

@pokash
Copy link

pokash commented Nov 19, 2019

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

@mleplawy
Copy link

Czy udało Ci się rozwiązać problem?

@pokash
Copy link
Author

pokash commented Dec 30, 2019

@mleplawy tak :) problem udało się dość szybko rozwiązać

@mleplawy
Copy link

@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ć

@pokash
Copy link
Author

pokash commented Dec 30, 2019

@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

@mleplawy
Copy link

Dzięki bardzo za szybką odpowiedź mój problem jest niestety nieco inny a już przy samym generowaniu tokenu zwracany jest błąd
Adnotacja 2019-12-30 143922
$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

@pokash
Copy link
Author

pokash commented Dec 30, 2019

@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

@mleplawy
Copy link

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
Adnotacja 2019-12-30 151341

@pokash
Copy link
Author

pokash commented Dec 30, 2019

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

@mleplawy
Copy link

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>
`

@pokash
Copy link
Author

pokash commented Dec 30, 2019

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ć :)

@mleplawy
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants