imper86/allegroapi

Błąd compser

kris86k opened this issue · 3 comments

Witam.
Właściwie mam gotowy skrypt logowania do REST Api ale nie wiem jak dorobić w nim uzyskiwanie nowego refesh_token dlatego próbuję z Twoim skryptem. Generalnie jestem zielony w programowaniu. Wcześniej używałem logowania w starym api allegro do aktualizacji stanów magazynowych ale niedługo mają wyłączyć stary typ logowania dlatego szukam rozwiązania problemu.
Najpierw miałem błąd związany z plikiem autoload.php. Utworzyłem katalog vendor i tam wrzuciłem plik znaleziony w którymś z katalogów.
Teraz dostaję inny błąd:

Fatal error: Uncaught Error: Class 'Imper86\AllegroApi\Credentials' not found in /index.php:10 Stack trace: #0 {main} thrown in /index.php on line 10

Czy da się to jakoś w miarę prosto rozwiązać?
Ewentualnie jak "dorobić" odświeżanie tokena w skrypcie z którym próbowałem wcześniej? https://github.com/Wiatrogon/php-allegro-rest-api/issues/9

Z góry dzięki za pomoc.

Hej @kris86k
Używasz w ogóle composera? Gdybyś użył autoloadera to taki błąd nie ma prawa wystąpić.

Hej
Nie ogarnę tego w ten sposób... Za mało wiem w temacie. Czy pomógłbyś mi zmodyfikować te kod aby odświeżyć token? I jak tego użyć?

'<?php
/**

protected $providerSettings = [
'ClientId' => 'xxx',
'ClientSecret' => 'zzz',
'ApiKey' => 'aaa',
'RedirectUri' => 'bbb',

'AuthorizationUri' => 'https://allegro.pl/auth/oauth/authorize',
'TokenUri' => 'https://allegro.pl/auth/oauth/token'

];

protected $headers = [
'Content-Type: application/x-www-form-urlencoded'
];

public function __construct(array $customSettings = []) {
$this->providerSettings = array_merge($this->providerSettings, $customSettings);
$this->headers[] = 'Authorization: Basic '. base64_encode($this->providerSettings['ClientId'] . ':' . $this->providerSettings['ClientSecret']);
}

public function tokenRequest($code) {
$curl = curl_init($this->providerSettings['TokenUri']);

curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
  'grant_type' => 'authorization_code',
  'code' => $code,
  'api-key' => $this->providerSettings['ApiKey'],
  'redirect_uri' => $this->providerSettings['RedirectUri']
]));    

$result = ($result = curl_exec($curl)) === false ? false : json_decode($result);

if ($result === false) {
  throw new Exception('Unrecognized error');
} else if (!empty($result->error)) {
  throw new Exception($result->error . ' - ' . $result->error_description);
} else {
  return $result;
}

}

public function getAuthorizationUri() {
return $this->providerSettings['AuthorizationUri'] . '?' . http_build_query([
'response_type' => 'code',
'client_id' => $this->providerSettings['ClientId'],
'api-key' => $this->providerSettings['ApiKey'],
'redirect_uri' => $this->providerSettings['RedirectUri']
]);
}
}

// Indywidualne parametry można podać do konstruktora w postaci tablicy, lub bezpośrednio w definicji klasy.
$auth = new AllegroOAuth2Client();

// Dobrze byłoby sprawdzić od kogo przychodzi żądanie
if (!empty($_GET['code'])) {
try
{
$result = $auth->tokenRequest($_GET['code']);
echo 'Twój Access Token: ' . $result->access_token . '';
echo '
Twój Refresh Token: ' . $result->refresh_token . '';
echo '
Twój expires_in: ' . $result->expires_in . '';
file_put_contents('.verkey', $result->refresh_token);

}
catch(Exception $e)
{
echo $e->getMessage();
}
} else {

echo ' Logowanie: Zaloguj do Allegro';
}'

@kris86k mógłbym pomóc w kwestii mojej biblioteki, natomiast myślę, że w kwestii bibliotek napisanych przez innych autorów powinieneś odzywać się do ich autorów :), ewentualnie na oficjalnym repo allegro - https://github.com/allegro/allegro-api/issues

Composer na dzień dzisiejszy to must have w PHP. Nie mając go utrudniasz sobie życie. Gwarantuję Ci, że czas, który poświęcisz na ogarnięcie tego tematu pozwoli Ci zaoszczędzić bardzo dużo czasu w przyszłości. Jeżeli działasz na windowsie to polecam zapoznać się np z laravel homestead - gotowa maszyna wirtualna, która ma zainstalowane wszystko, co potrzebne do developmentu, łącznie z composerem.