Версия Webasyst
2.7.0.636
Версия PHP
7.4.33
Пример моего скрипта
<?php
$apiUrl = 'https://test.ru/api.php';
$accessToken = '02ee4a92b260dae52d91a84397a43d01';
$params = [
'method' => 'shop.category.getTree',
'format' => 'json'
];
$url = "{$apiUrl}?" . http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $accessToken,
]);
$response = curl_exec($ch);
if ($response === false) {
echo "cURL Error: " . curl_error($ch);
} else {
echo $response;
}
curl_close($ch);
?>
токен получил по документации, установлен shop-script -
всегда получаю ответ от апи-
{"error":"app_not_installed","app":null,"error_description":"App is not installed ()"}
Пробовал получать просто данные юзеров с вебасиста,тоже самое.
У юзера через которого сделан токен есть все права,он админ и
Доступ к API разрешен Yes
Также пробовал такую версию скрипта
<?php
$apiUrl = 'https://test.ru/api.php';
$clientId = '39992';
$clientName = 'APIGoogleSheetsdgh56456456nth567w45345';
$redirectUri = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
$logFile = __DIR__ . '/api_log.txt';
function logMessage($message, $logFile) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - " . $message . PHP_EOL, FILE_APPEND);
}
function getContent($postData) {
$boundary = md5(rand(0, 32000));
$content = '';
foreach ($postData as $key => $val) {
$content .= '--' . $boundary . "\n";
$content .= 'Content-Disposition: form-data; name="' . $key . '"' . "\n\n" . $val . "\n";
}
$content .= "--$boundary--\n";
return array($boundary, $content);
}
if (empty($_GET['code'])) {
$authUrl = $apiUrl . '/auth?client_id=' . $clientId . '&client_name=' . $clientName . '&response_type=code&scope=shop&redirect_uri=' . $redirectUri;
logMessage("Redirecting to: " . $authUrl, $logFile);
header('Location: ' . $authUrl);
exit();
} else {
// Получение токена
$postData = array(
'client_id' => $clientId,
'grant_type' => 'authorization_code',
'format' => 'json',
'code' => $_GET['code'],
'redirect_uri' => $redirectUri
);
list($boundary, $content) = getContent($postData);
logMessage("Requesting token with data: " . json_encode($postData), $logFile);
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: multipart/form-data; boundary=' . $boundary . "\r\n" .
'Content-Length: ' . strlen($content) . "\r\n",
'content' => $content,
)
));
$response = file_get_contents($apiUrl . '/token', false, $context);
logMessage("Token Response: " . $response, $logFile);
$responseArray = json_decode($response, true);
$accessToken = $responseArray['access_token'] ?? null;
if ($accessToken) {
// Запрос списка категорий товаров
$params = [
'method' => 'shop.categories.getList',
'format' => 'json'
];
$url = "{$apiUrl}?" . http_build_query($params);
logMessage("Request URL: $url", $logFile);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $accessToken,
]);
$response = curl_exec($ch);
if ($response === false) {
logMessage("cURL Error: " . curl_error($ch), $logFile);
echo "cURL Error: " . curl_error($ch);
} else {
logMessage("API Response: " . $response, $logFile);
echo $response;
}
curl_close($ch);
} else {
logMessage("Failed to obtain access token. Full response: " . $response, $logFile);
echo "Failed to obtain access token. Full response: " . $response;
}
}
?>
эффект тот же
установлен Shop-Script X 10.15.0.37