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')

Этот фрагмент кода предоставит вам домен магазина установленного в данный момент магазина.

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