2017-12-18 27 views
0

ゴール

次のアプリを作成します。App ProxyからShopify APIに電話

マーチャントは、顧客ごとに「トップ商品」を選択します。これらはバックエンドに保存されます。例えば

  • カスタマーA:
    • 製品X、バリアント1
    • 製品Y、バリアント3
  • カスタマーB:
    • 製品X 、変異体2
    • 製品Z、変種1
    • 製品W、変種1

顧客は、ログインすることができるはずです、ストア内のページに移動する(例えば、 store.com/top_products)、独自の「トッププロダクト」を参照してください。私はこれまで

を行うために管理何

私はHerokuのに(shopify_api宝石を使用していますhttps://github.com/Shopify/shopify_app、)レールShopifyアプリを展開し、私の店にそれを接続するために管理。

私はアプリのプロキシを設定することもできました。管理アプリのページとアプリのプロキシの両方に対して、アプリから適切な回答が得られます。

私のパブリックアプリケーションは基本的にうまくいくようです。

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

はしかし、これが唯一の管理アプリのコントローラのように(ShopifyApp::AuthenticatedControllerから呼び出すことができます:私はアプリプロキシにこのような何かを呼び出す必要があります私は今

をしなければならない

)で、ShopifyApp::ApplicationController(プロキシコントローラのようなもの)ではありません。

これまでのところ、私はAPIを呼び出して、ストアの管理ダッシュボードから正しい結果を確認することしかできませんでした。

ShopifyAPI::Product.find私は認証されていないApp Proxyから電話をかけることができません。

Googleは本当に私を助けません。 これは私の問題に似ている(ただし何の解決策を持っていません):https://ecommerce.shopify.com/c/shopify-discussion/t/how-to-connect-to-a-store-with-api-from-app-proxy-request-429417

質問

  1. 何のAppプロキシからAPIを呼び出すための最良の方法でしょうか?
  2. また、ストアのAPIと通信する バックエンドを使用してストアフロントエンドに情報を表示するにはどうすればよいですか?アプリプロキシは正しいアプローチですか?

答えて

0

ShopifyのApp Proxy呼び出しでは、ショップという名前でストアが提供されます。したがって、あなたはバックエンドの店を探して、認証されたセッションで何かをすることができます。私はApp ProxyとWebhooksでこれを常に行っています。 Shopifyからの通話であることを確認したら、ショップ名を取得するので、安全なセッションを開くことができます。さらに、App Proxy呼び出しで顧客IDを送信して、顧客の製品を入手することもできます。

あなたは正しいことをしています、アプリプロキシは正しいパターンであり続けます。あなたは栄光から数分です。私のプロキシコントローラのいずれかから

...

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 
関連する問題