Я создаю приложение Shopify, используя этот шаблон: https://github.com/Shopify/shopify-app-template-node/tree/cli_three , и мне было интересно, как я могу получить URL-адрес магазин, использующий мое приложение (имеется в виду URL-адрес документа за пределами iFrame). У меня был рабочий подход с использованием location.ancestorOrigins
( https://developer.mozilla.org/en-US/docs/Web/API/Location/ancestorOrigins), но поскольку это несовместимо с Firefox, мне было интересно, есть ли это другой подход. Заранее спасибо за вашу помощь!
Все вызовы вашего приложения предоставляют параметр магазина (а теперь еще и параметр хоста), гарантируя, что вы всегда будете знать магазин shopify, используя ваше приложение. Нет ситуаций, когда ваше приложение вызывается без параметра магазина, являющегося частью уравнения от Shopify.
@TwistedOwl да, верно. Я хочу использовать его на странице в интерфейсной части приложения.
Хорошо. хорошо, я удвою вниз. Если вы на самом деле законно работаете над приложением Shopify, то вы должны понимать, что магазин, с которым вы работаете, известен в 100% случаев. Для внутренних вызовов это параметр магазина, а для любого внешнего кода есть старый объект магазина Liquid. Вы не можете запустить какой-либо код в приложении или через приложение и не понять этого. Если вам нужно полагаться на браузер для получения информации из URL-адреса, вы делаете что-то красивое? Только мое мнение, но эй, вы получаете это бесплатно!
Итак, я сам придумал решение, но спасибо за вашу помощь @TwistedOwl и @David Lazar. Я публикую свой код здесь на случай, если у кого-то возникнет такая же проблема в будущем:
import {useAppBridge} from "@shopify/app-bridge-react";
function DemoPage() {
const bridge = useAppBridge();
const shopUrl = bridge.hostOrigin.replace('https://', '').replace('www.', '');
console.info(shopUrl);
}
Я думаю, что @M.Singer спрашивает, как получить URL-адрес магазина во внешнем интерфейсе, а не в бэкэнде, но я не уверен.