Intereting Posts
Google App-Gmail Невозможно установить. Gmail, заменяющий адрес при отправке через SMTP-транспорт Swiftmailer (PHP) Как получить номер строки ID таблицы sql? От одного до многих отношений и добавление / изменение формы в SonataAdmin и Symfony2 используя Ajax с 3 последовательными выпадающими списками в зависимости от eachother Ajax, javascript отправлять переменную на другую страницу, при нажатии Установите GD-библиотеку и freetype в Linux Ошибка проверки парсера XML. Laravel 5.2 – Каждый маршрут перенаправляется на главную страницу Обрезаемая фатальная ошибка: объект класса stdClass не может быть преобразован в строку в … после попытки вставить в базу данных Довольно печатать HTML через PHP без проверки? Где я начинаю писать новый скриптовый язык? Формат даты MySQL Joomla 1.0, ссылка администратора перенаправляется на «installation / index.php», как предотвратить это перенаправление? Необычные заголовки HTTP в API Plesk Охотничьи мошенники в голосовании

Ошибка входа в систему Bigcommerce api (single sign-on)

Я новичок в токенах bigcommerce и jwt. Я пытаюсь получить имя пользователя api для входа в магазин трейлов. Но они не смогли успешно войти в систему автоматически.

Я получил его работать один или два раза, но теперь он больше не работает, и он не может понять странное поведение, так как ничего не изменилось с кодом. Я пробовал googling, если у кого-то еще были проблемы с клиентом login api, но ничего не нашел.

Я прошел через учебник по https://developer.bigcommerce.com/api/v2/#customer-login-api и скопировал приведенный пример. Есть ли что-то, что мне не хватает с кодом ниже?

  • Я пошел на developer.bigcommerce.com и создал проект приложения.
  • Я получил идентификатор клиента и клиентскую секретность из проекта приложения.
  • Я зашел в пробный магазин и успешно установил проект приложения.
  • Я также тестировал эту страницу на SSL.
  • Может быть, потому что это магазин трейла, и он будет работать только в том случае, если это настоящий магазин?

Благодарю.

Вот код php ниже:

include "vendor/autoload.php"; use Bigcommerce\Api\Client as Bigcommerce; use Firebase\JWT\JWT; function getCustomerLoginToken($id, $redirectUrl = '', $requestIp = '') { /* if (empty(self::$client_secret)) { throw new Exception('Cannot sign customer login tokens without a client secret'); } */ $payload = array( 'iss' => '#MyApp1's Client ID#', 'iat' => time(), 'jti' => bin2hex(random_bytes(32)), 'operation' => 'customer_login', 'store_hash' => '#Store Hash#', 'customer_id' => $id ); if (!empty($redirectUrl)) { $payload['redirect_to'] = $redirectUrl; } if (!empty($requestIp)) { $payload['request_ip'] = $requestIp; } return JWT::encode($payload, "#MyApp1's Client Secret#", "HS256"); } $jwt = getCustomerLoginToken(1); header("Location: " . 'https://store-#Store Hash#.mybigcommerce.com/login/token/' . $jwt); exit(); 

Существует несколько ограничений, которые могут вызвать ошибки:

  • Приложение должно быть установлено в хранилище (похоже, что вы все здесь хорошо – вы также можете протестировать маркер API, созданный локально в хранилище – https://support.bigcommerce.com/articles/Public/Store-API- Учетные записи / )
  • Приложение должно иметь область входа в систему OAuth
  • URL-адрес JWT должен быть посещен в течение примерно 30 секунд или он не будет работать.
  • Компьютер / сервер, создающий JWT, должен синхронизировать часы, иначе ваше значение IAT будет создано более 30 секунд назад или даже в будущем, которое не удастся.
  • URL-адрес можно посещать только один раз – если что-либо запускает запрос GET против него, кроме браузера предполагаемого конечного пользователя, он не будет работать. Например, если вы отправляете URL-адрес в сообщении Slack, slack попытается просмотреть ссылку, посетив ее и, следовательно, аннулировать ее.
  • Хорошо проверить, что ваш JWT действителен на https://jwt.io/

Поддержка BigCommerce имеет доступ к журналам, которые могут пролить свет на ситуацию, если вы исключили вышеизложенное.

Надеюсь это поможет!