Как я могу получить 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 обладает большим сообществом разработчиков и обширной документацией.


51
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 может не всегда включать токен обновления в первоначальный ответ. Это зависит от конфигурации вашего приложения и запрошенного разрешения.


Решено

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