Я запросил авторизацию для публичного приложения, чтобы иметь возможность доступа к данным магазина через API Shopify.
Магазин успешно авторизовал мое приложение с помощью URL-адреса запроса авторизации, например
https://some-store.myshopify.com/admin/oauth/authorize?client_id=123abc&scope=read_inventory%2Cread_products&redirect_uri=http%3A%2F%mysite.com%2Fauth.php&state=123456
и ответ был передан обратно в мою заявку. Этот ответ (содержащий код, который можно обменять на маркер постоянного доступа) был неправильно обработан моим приложением (из-за ошибки на странице маркер доступа не был сохранен).
Все, что я прочитал относительно запроса этих токенов, включает авторизацию магазина - но, учитывая, что магазин уже авторизовал мое приложение, передал обратно код, и этот код уже был успешно обменен на токен : есть ли каким образом мое приложение может запросить тот же самый токен или новый, используя мои ключи API, если приложение уже авторизовано?
Единственный способ, который я в настоящее время могу найти для запроса токена, - это начать с самого начала и получить код для обмена и т. Д.
Я работаю в PHP и использую Оболочка php shopify от Luke Towers
Этот этап был успешно завершен:
function check_authorization_attempt()
{
$data = $_GET;
$api = new Shopify($data['shop'], [
'api_key' => '123',
'secret' => '456',
]);
$storedAttempt = null;
$attempts = json_decode(file_get_contents('authattempts.json'));
foreach ($attempts as $attempt) {
if ($attempt->shop === $data['shop']) {
$storedAttempt = $attempt;
break;
}
}
return $api->authorizeApplication($storedAttempt->nonce, $data);
}
$response = check_authorization_attempt();
и я смог бы прочитать токен доступа с:
$access_token = $response->access_token;
Но это был этап, на котором мое приложение столкнулось с ошибкой при доступе к базе данных, в которой был записан указанный токен.
Я не могу повторить это, не повторяя запрос авторизации, потому что данные в $ _GET, которые передаются этой функции, поступают из ответа Shopify владельцу магазина, санкционирующему доступ, и включают среди прочего код для обмена.