Ebay: токен авторизации недействителен. Не удалось проверить токен аутентификации в запросе API

Я пытаюсь использовать Ebay PHP SDK подключиться к Ebay и получить продавцов, продающих товар. Для этого я использовал следующие шаги:

Шаг 1: Получить авторизационный токен и код для вошедшего в систему пользователя. Я использовал следующий код для реализации.

use \DTS\eBaySDK\OAuth\Services as OauthService;
use \DTS\eBaySDK\OAuth\Types as OauthType;

use \DTS\eBaySDK\Constants;
use \DTS\eBaySDK\Trading\Services;
use \DTS\eBaySDK\Trading\Types;
use \DTS\eBaySDK\Trading\Enums;

$service = new OauthService\OAuthService([
'credentials' => $config['sandbox']['credentials'],
'ruName'      => $config['sandbox']['ruName'],
'sandbox'     => true
]);
$oauthParam = [
'client_id' => $config['sandbox']['credentials']['appId'],
'redirect_uri' => $config['sandbox']['redirect_uri'],
'response_type' => 'code',
'scope' => 'https://api.ebay.com/oauth/api_scope'
];
$urlParam = '';
$query = [];
foreach($oauthParam as $key => $param) {
$query[] = "$key=$param";
}
$urlParam = '?' . implode('&', $query);
$url = 'https://signin.sandbox.ebay.com/authorize' . $urlParam;
@session_start();

if(isset($_SESSION['ebay_oauth_token'])) {
$token = $_SESSION['ebay_oauth_token']['code'];
}
else {
if(isset($_GET['code'])) {
$token = $_GET['code'];
$_SESSION['ebay_oauth_token']['code'] = $token;

$request = new OauthType\GetUserTokenRestRequest();
$request->code = $token;

$response = $service->getUserToken($request);

if ($response->getStatusCode() !== 200) {
//Error
} else {
$_SESSION['ebay_oauth_token']['access_token'] = $response->access_token;
}
} else {
@header('location: ' . $url);
}

}

$userOauthToken = $_SESSION['ebay_oauth_token']['access_token'];

Приведенный выше код работает как положено. То есть пользователь перенаправляется на страницу входа, чтобы авторизоваться и получить набор кода и токена доступа.

Шаг 2: Выбрать пункты продажи, используя code получен из Step #1, Я использовал следующий код для реализации функциональности.

$request->RequesterCredentials = new Types\CustomSecurityHeaderType();
$request->RequesterCredentials->eBayAuthToken = $token; //Obtained from Step 1

$request->ActiveList = new Types\ItemListCustomizationType();
$request->ActiveList->Include = true;
$request->ActiveList->Pagination = new Types\PaginationType();
$request->ActiveList->Pagination->EntriesPerPage = 10;
$request->ActiveList->Sort = Enums\ItemSortTypeCodeType::C_CURRENT_PRICE_DESCENDING;

$pageNum = 1;

do {
$request->ActiveList->Pagination->PageNumber = $pageNum;
$response = $service->getMyeBaySelling($request);
if (isset($response->Errors)) {
//Error Output
}

if ($response->Ack !== 'Failure' && isset($response->ActiveList)) {
foreach ($response->ActiveList->ItemArray->Item as $item) {
//Output response
}
}

$pageNum += 1;

} while ({condition});

У меня проблема в Step #2, Генерирует Invalid Token во время выполнения кода.

Буду очень признателен, если кто-нибудь поможет мне.

0

Решение

Вы смешиваете запросы. Во второй части вашего кода запрос относится к Trading API, использующему токен Auth’n’Auth, и вы пытаетесь совершить вызов с использованием токена OAuth. Эти 2 токена различны и работают для разных API.

У вас есть 2 варианта.

  1. Либо сохраните вторую часть вашего кода, которая на самом деле кажется правильной, но используйте токен Auth’n’Auth (который вы можете сгенерировать из учетной записи разработчика). В этом случае первая часть бесполезна.

  2. Сохраните первую часть своего кода и удалите вторую часть. В этом случае вам нужно переписать вторую часть кода, используя OAuth API вместо Trading API.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector