Как передать строку запроса из Shopify во встроенное приложение?

Я создаю приложение Shopify с помощью Next.js, и мне нужно получить строку запроса, чтобы я мог проверить getServerSideProps личность продавца (имейте в виду, что файлы cookie не рекомендуются для приложений Shopify)

При посещении некоторых приложений я заметил, что некоторые из них получают строку запроса, передаваемую из Shopify в каждом запросе.

На этом изображении показано, как это должно выглядеть при каждом запросе.

Это изображение показывает, как ведет себя мое приложение

На этом изображении вы можете видеть, что при наведении курсора на маршруты строки запроса отсутствуют, что означает, что они каким-то образом передаются родительским приложением.

На данный момент я использую Cookie для передачи shopOrigin, но я чувствую, что в этом нет необходимости, если каким-то образом я смогу получить строку запроса в каждом запросе, а также с помощью HMAC я смогу проверить, что запросы из Shopify.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
1 381
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Любые вызовы вашего приложения, исходящие из Shopify, должным образом предоставляют параметр магазина при выполнении запросов. В вызовах вашего собственного приложения вы также, вероятно, будете использовать название магазина в качестве значения строки запроса.

Обратите внимание, что вы по-прежнему можете проверять свои сеансы внутри с помощью файла cookie, вы просто не делаете это через сторонний маршрут, за пределами iframe, как мы привыкли. Shopify имеет множество документации о том, как правильно аутентифицировать и создавать приложения, ознакомьтесь с ними. Они даже дают вам работающее приложение Node, чтобы вы могли убедиться, что делаете все правильно.

Спасибо. К сожалению, их учебные пособия устарели, а пример приложения Node.js использует koa-shopify-auth, который использует файлы cookie, Shopify движется к аутентификации без файлов cookie. Кроме того, Shopify передает параметр магазина по первоначальному запросу, но я использую SPA, а точнее Next.js, и мое приложение требует, чтобы параметр магазина сохранялся при изменении маршрута.

Ivor 28.12.2020 15:36

Вы поймете это. Это не так сложно. Вы делаете из мухи слона! Узор довольно простой. У вас есть маршрут в ваше приложение, которое не аутентифицировано, где вы оцениваете входящие параметры. Если запрос не зарегистрирован, войдите в него. Как только зарегистрированный запрос попадет в ваше приложение, убедитесь, что вы добавили токен JWT, если хотите пройти этот маршрут ко всем исходящим запросам, чтобы все входящие использовали его. Или просто используйте куки в стиле старой школы В ВАШЕМ ПРИЛОЖЕНИИ, и вы в деле. Ничего нового или ужасного для вас.

David Lazar 28.12.2020 17:43

К сожалению, Shopify не любит файлы cookie во встроенных приложениях. Ссылка: twitter.com/ShopifyDevs/status/1342130667694546944 Спасибо за ваше предложение. Я буду искать.

Ivor 29.12.2020 13:58

Только файлы cookie передавались из-за пределов iframe. Ваши собственные внутренние файлы cookie приложения в порядке.

David Lazar 29.12.2020 18:18

«Не использовать их во встроенных приложениях» не похоже на то, что мы можем оставить их в нашем внутреннем приложении. Мое приложение встроено. :)

Ivor 29.12.2020 18:29

Ваше приложение — это ваш бизнес. Вы хотите установить файл cookie в своем приложении для целей вашего приложения, никто не скажет «бу». Проблемой являются только сторонние файлы cookie. Что угодно.. разберешься.

David Lazar 29.12.2020 21:07
Ответ принят как подходящий

Решение было довольно простым.

Shopify предоставляет компонент TitleBar AppBridge, который вы можете использовать для управления навигацией в приложении. Что он делает, так это то, что при каждом изменении маршрута он перезагружает iframe, а в запросе поступают hmac, магазин, код и временная метка. Это немного медленнее, чем маршрутизация на стороне клиента, но работает так, как ожидалось.

Для того, чтобы использовать его, вам просто нужно перейти на: Панель инструментов партнера / Ваше приложение / Расширения / Встроенное приложение (нажмите «Управление») / Навигация (нажмите «Настроить») и добавьте навигационные ссылки, затем вам просто нужно импортировать TitleBar из app-bridge-react и поместить его в index.js

Другие вопросы по теме