Shopify - Получить домен магазина внутри приложения
Я новичок в разработке приложений Shopify и использую Node,Express для бэкенда и реагирую на использование polaris libaray.
Мой вопрос заключается в том, как получить домен магазина, запрос запускается через приложение. Когда я искал, я мог найти только один используемый в Ruby ShopifyAPI::Shop.current
и я ищу аналогичную вещь для использования в узле?
3 ответа
Для примеров проверьте https://github.com/BKnights/kotn-shopify-utils Да, он использует сеанс. Код довольно своеобразный. Я опубликовал его в основном как простой способ поделиться своими собственными проектами, но он неплохо сработал.
Если вы используете это, где вы можете масштабировать свои серверы, вам нужно будет заменить механизм сессии на что-то более распределенное. Сеансы cookie работают.
Это предполагает перенаправить страницу настройки приложения в / предпочтения. Посмотрите на этот маршрут с validSession, session,
промежуточный слой
Для передачи домена в Polaris я поместил информацию о магазине в простой объект JS на содержащей странице (это шаблон dustjs):
<script type="text/javascript">
var KotN = {
shop:'{shop}',
apiKey: '{apiKey}',
shopOrigin: 'https://{shop}.myshopify.com',
locale:'{locale}' || (navigator.languages ? (navigator.language || navigator.languages[0]) : (navigator.userLanguage || navigator.browerLanguage))
};
</script>
и тогда компонент Polaris выглядит так:
import * as React from 'react';
import {EmbeddedApp} from '@shopify/polaris/embedded';
import ShopProvider from './stores/ShopProvider';
import Status from './views/status';
const shop = KotN.shop;
const shopOrigin = KotN.shopOrigin;
const apiKey = KotN.apiKey;
console.log('shop: '+ shop +' and origin: '+ shopOrigin);
export default class MyApp extends React.Component {
render() {
return (
<EmbeddedApp
apiKey={apiKey}
shopOrigin={shopOrigin}
forceRedirect={true}
debug={true}
>
<ShopProvider>
<Status />
</ShopProvider>
</EmbeddedApp>
);
}
}
Я знаю, что это старая тема, но я наткнулся здесь, пока искал ответ, и просто хотел поделиться своим решением с вами, ребята, у которых тоже есть такая же проблема. Вот как я получаю домен магазина.
let shopDomain = new URL(window.location).searchParams.get("shop");
Я думаю, что после всех этих лет будет легко получить домен Shop с помощью метода, описанного ниже.
new URLSearchParams(location.search).get('shop')
Этот фрагмент кода предоставит вам домен магазина установленного в данный момент магазина.