Как я могу повторно приобрести токен доступа Shopify OAuth для магазина, в котором ранее было установлено мое приложение? - PullRequest
0 голосов
/ 05 ноября 2018

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

1 Ответ

0 голосов
/ 05 ноября 2018

Вы должны повторно запросить авторизацию. Никто не виноват, кроме вас, в том, что ваш код персистентного уровня был неверным. Так что вы ничего не можете сделать, чтобы изменить это. Убедитесь, что ваш код работает. Поскольку у клиента нет токена в слое персистентности вашего приложения, ваше приложение будет повторять обмен токенами авторизации. Им не нужно сначала удалять ваше приложение. В общем, в следующий раз, когда ваш клиент попытается использовать приложение, ДА, его попросят утвердить его, но кого это волнует, так и будет, и вы получите хороший токен для хранения. Вы исправили свой код (справа), чтобы он работал. Ты на шаг ближе к славе.

...