gogowq
@gogowq
Ozh domosh acha ozh

Api webasyst возвращает {"error":"app_not_installed","app":null,"error_description":"App is not installed ()"}?

Версия 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
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы