5

Shopifyの指示に従って、特定のアプリとショップの組み合わせの永続的なトークンを取得しています(http://api.shopify.com/authentication.html)。

一時的なトークンを取得してから、単純なhtmlフォームを使用して永続的なトークンを受け取ることができます。

しかし、私が受け取る応答は次のとおりです。{"error": "invalid_request"}

手伝ってくれませんか。私はどこでも(Stackoverflow、Shopifyサポートフォーラムなど)検索しましたが、これを解決する方法の手がかりを見つけることができません。私のアプリはオンラインで、Herokuでホストされています。

ありがとう、

画像3 画像2 画像1

4

2 に答える 2

9

私たちの心は似ていると思います!私はあなたとまったく同じ問題を経験していました。私たちは両方ともドキュメントに混乱していたと思います!

shopify_appgemを使用してアプリを生成しました。これにより、次のメソッドが に作成されました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 つのものが含まれます。

  1. ショップの *.myshopify.com ドメイン ( url)
  2. 将来の使用のために保存する永久アクセス トークン( token)

John Duff が言ったように、私たちはすでにアクセストークンを持っています! に POSTする必要はありませんhttps://SHOP_NAME.myshopify.com/admin/oauth/access_tokenshopify_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 ページを見つけてくれることを願っています!

これがお役に立てば幸いです。

乾杯、ニック

于 2012-07-07T09:02:36.263 に答える
1

有効期限が切れてコードが使用されたら、トークンを保存するか、新しいコードを要求する必要があります。ログでは、リクエストの 1 つが成功した後、コードの有効期限が切れていたために失敗した同じコードでアクセス トークン リクエストを作成し続けました。

アクセス許可を再度要求し、受け取った新しいコードを使用してアクセス トークンの呼び出しを行ってみてください。コードは再利用できませんので、アクセストークンは必ず保管してください。

于 2012-07-02T00:52:59.237 に答える