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