Вызов Shopify API из прокси приложения

Цель

Я хочу создать следующее приложение.

Торговец выбирает «лучшие продукты» для каждого покупателя. Они будут храниться в моем сервере.

Например:

  • Customer A:
    • Product X, variant 1
    • Товар Y, вариант 3
  • Customer B:
    • Product X, variant 2
    • Изделие Z, вариант 1
    • Изделие W, вариант 1

После этого покупатель сможет войти в систему, перейти на страницу в магазине (например, store.com/top_products) и увидеть свои собственные «лучшие продукты».

Что мне удалось сделать до сих пор

Мне удалось развернуть приложение Shopify rails (https://github.com/Shopify/shopify_app, которое использует драгоценный камень shopify_api) в Heroku и подключите его к моему магазину.

Мне также удалось настроить прокси приложения. Я получаю правильный ответ от приложения как для страницы приложения администратора, так и для прокси приложения.

По сути, мое общедоступное приложение работает нормально.

Что я должен делать сейчас

Мне нужно будет вызвать что-то вроде этого в прокси приложения:

ShopifyAPI::Product.find(:all, params: { limit: 10 })

Однако это можно вызвать только из ShopifyApp::AuthenticatedController (как в контроллере приложения администратора), а не из ShopifyApp::ApplicationController (как в прокси-контроллере).

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

Мне не удается позвонить ShopifyAPI::Product.find с неаутентифицированного прокси приложения.

Google мне особо не помогает. Это похоже на мою проблему (хотя и не имеет решения): https://ecommerce.shopify.com/c/shopify-discussion/t/how-to-connect-to-a-store-with-api-from-app-proxy-request-429417

Вопрос

  1. Как лучше всего вызвать API из прокси приложения?
  2. Или как мне отобразить некоторую информацию во внешнем интерфейсе магазина, используя мой бэкэнд, который взаимодействует с API магазина? Правильный ли подход - прокси-сервер приложения?

person dudettes    schedule 18.12.2017    source источник


Ответы (1)


При вызове App Proxy из Shopify магазин передается в качестве параметра shop. Следовательно, вы можете найти магазин в своем бэкэнде и сделать что угодно с аутентифицированным сеансом. Я постоянно делаю это с помощью прокси-сервера приложений и веб-перехватчиков. Вы подтверждаете, что звонки из Shopify, вы получаете название магазина, следовательно, вы можете открыть безопасный сеанс. Кроме того, вы можете отправить идентификатор клиента вместе с вызовом прокси-сервера приложения, чтобы получить продукты для клиента.

Вы делаете правильные вещи, App Proxy - правильный образец, и так далее. Вы в нескольких минутах от славы.

С одного из моих прокси-контроллеров ...

shop = Shop.find_by(shopify_domain: params[:shop])
if shop
  shop.with_shopify_session do
    products = ShopifyAPI::Product.find(params[:id])
    # la-dee-da I got a product...
  end
end
person David Lazar    schedule 19.12.2017