Как я могу получить Refresh_token из Big Commerce?

У меня есть следующий код для получения токена доступа, и он возвращает токен доступа, но ответ не содержит токена обновления. Что может быть причиной?

$token_url = 'https://login.bigcommerce.com/oauth2/token';
$post_data = [
    'client_id' => $client_id,
    'client_secret' => $client_secret,
    'code' => $code,
    'grant_type' => 'authorization_code',
    'redirect_uri' => $redirect_uri,
];
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
0
0
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Следующий код поможет вам получить токен доступа из ответа BigCommerce OAuth2 и проверить наличие токена обновления. Убедитесь, что ваши конфиденциальные данные должны быть загружены из переменных среды.

$token_url = 'https://login.bigcommerce.com/oauth2/token';

$post_data = [
    'client_id' => getenv('BIGCOMMERCE_CLIENT_ID'), // Load from environment variable
    'client_secret' => getenv('BIGCOMMERCE_CLIENT_SECRET'), // Load from environment variable
    'code' => $code,
    'grant_type' => 'authorization_code',
    'redirect_uri' => $redirect_uri,
];

// Initialize cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $token_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);

// Check for cURL errors
if ($error) {
    echo 'Error retrieving token: ' . $error . PHP_EOL;
    exit(1);
}

// Decode the JSON response
$response_data = json_decode($response, true);

// Check for JSON decoding errors
if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'Error decoding JSON response: ' . json_last_error_msg() . PHP_EOL;
    exit(1);
}

// Handle the response
if (isset($response_data['access_token'])) {
    $access_token = $response_data['access_token'];
    echo 'Access Token: ' . $access_token . PHP_EOL;

    if (isset($response_data['refresh_token'])) {
        $refresh_token = $response_data['refresh_token'];
        echo 'Refresh Token: ' . $refresh_token . PHP_EOL;
    } else {
        echo 'Refresh Token not provided in the response.' . PHP_EOL;
    }
} else {
    // Handle error from BigCommerce (check for error codes in response)
    echo 'Error retrieving access token: ' . (isset($response_data['error']) ? $response_data['error'] : $response) . PHP_EOL;
}

Реализация BigCommerce OAuth2 может не всегда включать токен обновления в первоначальный ответ. Это зависит от конфигурации вашего приложения и запрошенного разрешения.

Пожалуйста, объясните, как эта стена кода решит проблему, с которой сталкивается ОП...

DarkBee 29.07.2024 14:13

@DarkBee Да, он решает проблему правильного получения и обработки токена доступа. Пожалуйста, просмотрите полный код

Eshban Bahadur 29.07.2024 14:36

Судя по тому, что я просмотрел, сообщение Refresh Token not provided in the response отображается только тогда, когда оно недоступно, так как же тогда это решает проблему? Более того, ответы, содержащие только код, не являются хорошими ответами.

DarkBee 29.07.2024 14:38

Нигде в документации API Bigcommerce не говорится о обновлении_токена.

MACMAN 01.08.2024 07:12
Ответ принят как подходящий

Продолжая поиск, я получил информацию о том, что токены доступа BigCommerce, как правило, долговечны, то есть срок их действия не истекает часто. Вам может не понадобиться токен обновления, если ваш токен доступа действителен в течение длительного периода.

У вас есть другие источники, кроме чатаGPT?

DarkBee 01.08.2024 08:03

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