私たちの心は似ていると思います!私はあなたとまったく同じ問題を経験していました。私たちは両方ともドキュメントに混乱していたと思います!
shopify_app
gemを使用してアプリを生成しました。これにより、次のメソッドが に作成されましたlogin_controller.rb
。
def finalize
if response = request.env['omniauth.auth']
sess = ShopifyAPI::Session.new(params['shop'], response['credentials']['token'])
session[:shopify] = sess
flash[:notice] = "Logged in"
redirect_to return_address
session[:return_to] = nil
else
flash[:error] = "Could not log in to Shopify store."
redirect_to :action => 'index'
end
end
その ( ShopifyAPI::Session.new
)の 3 行目は、Shopify 認証のステップ 2 を実行しています。パーマネント アクセス トークンを取得しています。
変数sess
には次の 2 つのものが含まれます。
- ショップの *.myshopify.com ドメイン (
url
)
- 将来の使用のために保存する永久アクセス トークン(
token
)
John Duff が言ったように、私たちはすでにアクセストークンを持っています! に POSTする必要はありませんhttps://SHOP_NAME.myshopify.com/admin/oauth/access_token
。shopify_app
これは、 gemによって生成されたコードで処理されます。
finalize メソッドに、次の行を追加しました。
def finalize
if response = request.env['omniauth.auth']
sess = ShopifyAPI::Session.new(params['shop'], response['credentials']['token'])
Shop.find_or_create_by_myshopify_domain(sess.url, access_token: sess.token)
...
これにより、ショップが作成され、それにアクセス トークンが割り当てられます。My Shop モデルには属性myshopify_domain
とがありますaccess_token
。
将来、そのショップで ShopifyAPI を使用したい場合は、shopify_api gem ホームページにある指示に従うだけです。
私はこれを解決するのに何時間も費やしました。ドキュメントをより明確にする方法がわかりません。問題が再び発生した場合、人々がこの StackOverflow ページを見つけてくれることを願っています!
これがお役に立てば幸いです。
乾杯、ニック