EBay API всегда возвращает invalid_client в рабочей среде, но песочница работает нормально

Я занимаюсь этим уже несколько дней, и я не могу найти решение.

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

Когда я использую среду песочницы, все отлично работает, однако, как только я использую рабочую среду, я получаю следующую ошибку:

{"error":"invalid_client","error_description":"client authentication failed"}

Моя файловая структура выглядит следующим образом:

конфиг.php:

<?php
    /* SAndbox 
$config = [
    'client_id' => 'xxxxx-xxxxxx-SBX-e55b66fda-63c7e331',
    'client_secret' => 'SBX-xxxxxx-dxxxxxb-47cb-9bee-f33b',
    'ru_name' => 'xxxxxxxxx-oxxxxas-xxxxxxx-tsuggc',
    'login_url' => 'https://auth.sandbox.ebay.com/oauth2/authorize',
    'oauth_url' => 'https://api.sandbox.ebay.com/identity/v1/oauth2/token',
    'api_scopes' => ['https://api.ebay.com/oauth/api_scope/sell.inventory'],
];
*/

$config = [
    'client_id' => 'xxxxxx-CxxxxxxT-PRD-455bfe8ea-7e445131',
    'client_secret' => 'PRD-797xxxx7bf-d5xxxc-4a19-axxade-ab8xx6',
    'ru_name' => 'xxxxxxx-osxxxxxxas-CxxxxS-hjlalp',
    'login_url' => 'https://auth.ebay.com/oauth2/authorize',
    'oauth_url' => 'https://api.ebay.com/identity/v1/oauth2/token',
    'api_scopes' => ['https://api.ebay.com/oauth/api_scope/sell.inventory'],
];

получитьЛогин.php:

<?php
include_once 'config.php';

$url = $config['login_url'];
$url .= '?client_id='.$config['client_id'];
$url .= '&response_type=code';
$url .= '&redirect_uri='.urlencode($config['ru_name']);
$url .= '&scope='.implode(' ', $config['api_scopes']);
echo "<a href='{$url}'>login</a><br/><br/>";


die();

login.php(куда меня перенаправляют после авторизации):

<?php
include_once 'config.php';
echo "<pre>";
$code = $_GET['code'];
$authorization = 'Basic '.base64_encode($config['client_id'].':'.$config['client_secret']);
print_r($config);
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $config['oauth_url'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "grant_type=client_credentials&code = ".$code."&redirect_uri = ".$config['ru_name'],
    CURLOPT_HTTPHEADER => [
        "Authorization: ".$authorization,
        "Content-Type: application/x-www-form-urlencoded",
        "cache-control: no-cache",
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);
$info = curl_getinfo($curl);
curl_close($curl);




print_r($info);
if ($err) {
    echo "cURL Error #:".$err;
} else {
    echo 'resp: '.$response;
}

Любая помощь будет оценена по достоинству, так как я собираюсь рвать на себе волосы из-за этого!

$url .= '&scope='.implode(' ', $config['api_scopes']); создаст поврежденный URL-адрес, проверьте http_build_query()
hanshenrik 05.04.2019 18:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
1
1 176
3

Ответы 3

Кажется, у вас есть вся необходимая достоверная информация, единственное, что кажется подозрительным, это: вы получили объем в

$url .= '&scope='.implode(' ', $config['api_scopes']);

но я думаю, что вы не включили эту область в

  CURLOPT_POSTFIELDS => "grant_type=client_credentials&code = ".$code."&redirect_uri = ".$config['ru_name'],
curl_setopt($curl_handle, CURLOPT_POSTFIELDS,http_build_query($post_data));

пожалуйста, включите http_build_query($post_data) в свои запросы на публикацию Curl.

Я не думаю, что это имеет какое-либо отношение к вашему коду. Вероятно, это связано с ограничениями вызовов API. Можете ли вы протестировать его с другим клиентом API или использовать вторую ссылку для проверки своей квоты.

Другие вопросы по теме