Liquid、JavaScriptなどに関する質問
はじめまして。
アプリ開発についての質問です。
Shopify App CLIを使って開発を進めようとしています。
'shopify create node' でアプリを作成し、初期状態のままHerokuにデプロイしようとしましたが、うまくいかないのでアドバイスをいただければと思います。
私が実行した手順は以下です。
(以下、補足情報です)
2021-03-05T05:32:02.842644+00:00 heroku[router]: at=info method=GET path="/?hmac=...&shop=[開発ストアのドメイン]×tamp=1614922322" host=[Herokuアプリのドメイン] request_id=... fwd="..." dyno=web.1 connect=1ms service=4ms status=302 bytes=302 protocol=https
2021-03-05T05:32:03.027100+00:00 heroku[router]: at=info method=GET path="/auth?shop=[開発ストアのドメイン]" host=[Herokuアプリのドメイン] request_id=... fwd="..." dyno=web.1 connect=2ms service=8ms status=200 bytes=16553 protocol=https
2021-03-05T05:32:03.414117+00:00 heroku[router]: at=info method=GET path="/auth/inline?shop=[開発ストアのドメイン]" host=[Herokuアプリのドメイン] request_id=... fwd="..." dyno=web.1 connect=10ms service=12ms status=302 bytes=1656 protocol=https
Herokuにデプロイするとproductionモードになるようですが、何か関係あるのでしょうか。
また、調べてみると、以下のようなIssueもあったのですが、CLIのアップデートに伴い手動でモジュールを操作する必要がありますでしょうか。
https://github.com/Shopify/shopify-app-cli/issues/277
初歩的な質問になるかもしれませんが、ご回答いただけると助かります。
解決済! ベストソリューションを見る。
成功
具体的なエラー画面とHerokuのログをみてみないと詳細はわからないですが、ブラウザキャッシュとかは関係ないと思います。
> →リダイレクトは/callbackと/auth/callbackの両方を記載して、エラーが出たらしばらく時間をおく、というのが正解なのでしょうか…?
いえ、こういったことはありません。まず事象を整理するために、一旦Herokuは置いて、nggrok でホストして、ngrokのURLをブラウザで直接叩いて(ダッシュボードのテストボタンは使わずに)、正常に動くところまで持っていくのはどうでしょうか?
インストールがうまくいかない主な原因は、whitelistのリダイレクトが間違っている、(http httpsの違いも認識されます)
APIのキーとシークレットが間違っている、読み込めてない、(CLIで作ったコードはenv から読み込む仕様なので、heroku変数は参照しないはずですが、CLIのherokuデプロイは使ったことがないので定かでないです。)
ちなみに、最新のドキュメントからdeployコマンドが削除されているので、現在は非推奨かもしれません。
https://shopify.dev/tools/cli/reference
私のおすすめは、まずngrokでブラウザ経由でインストールできるようにしてから、herokuへのデプロイは、CLIではなくて、直接やるのが良いかと思います。
エラーメッセージを見ると、callbackにリダイレクトしようとして、そのURLがアプリの設定のwhitelistのURLに登録されていないエラーのように見えます。
Githubのエラーメッセージと異なるので原因は違いそうですが、ダッシュボードの「このストアでテストする」ではなくて、ブラウザから直接HerokuのURLか、または以下のURLを叩いてみてはどうでしょうか?
https://YOUR_SHOP_DOAMIN/admin/oauth/authorize?client_id=YOUR_API_KEY&scope=read_products,write_products,read_script_tags,write_script_tags&redirect_uri=https://YOUR_APP_DOMAIN_LIKE_HEROKU/callback&state=&grant_options[]=
返答ありがとうございます。
>ブラウザから直接HerokuのURLか、または以下のURLを叩いてみてはどうでしょうか?
色々と試行してみて、インストールができるときと、ページが表示できないときがあります。
何がトリガーでエラーが再現されるのかがいまいちつかめないのですが、
以下の流れで少し進めるようになりました。
リダイレクトURLを変更してからすぐにアクセスしようとしたのが不具合の原因でしょうか…?
---
◇リダイレクトURLを、https://[Herokuアプリのドメイン]/auth/callback または
https://[Herokuアプリのドメイン]/callback のどちらかのみ記載の場合
↓
◇Herokuのログが/auth/inlineにリダイレクトしてたので、試しにホワイトリストに加え、
/auth/callbackと/callbackも記載しました。
↓
◇もう一度リダイレクトURLをhttps://[Herokuアプリのドメイン]/callback のみの記載に戻す
※このとき認証許可ボタンを押すとエラーページに遷移します。
ただ、パートナーダッシュボード上ではインストールが完了しています。
開発ショップでアプリページを開くと、エラーページに遷移します。
---
同じソースで、数日前にも別のHerokuアプリを作成していたのですが、
こちらもリダイレクトURLをあれこれいじって、たまたま認証許可画面が出たから開発ストアにインストールできた…という感じでした。(その時も、認証許可後はエラーページに飛んだ記憶があります。)
数日前のほうのアプリは、今日はページ表示できています。リダイレクト許可は/callbackと/auth/callbackの両方を書いていました。
→リダイレクトは/callbackと/auth/callbackの両方を記載して、エラーが出たらしばらく時間をおく、というのが正解なのでしょうか…?
成功
具体的なエラー画面とHerokuのログをみてみないと詳細はわからないですが、ブラウザキャッシュとかは関係ないと思います。
> →リダイレクトは/callbackと/auth/callbackの両方を記載して、エラーが出たらしばらく時間をおく、というのが正解なのでしょうか…?
いえ、こういったことはありません。まず事象を整理するために、一旦Herokuは置いて、nggrok でホストして、ngrokのURLをブラウザで直接叩いて(ダッシュボードのテストボタンは使わずに)、正常に動くところまで持っていくのはどうでしょうか?
インストールがうまくいかない主な原因は、whitelistのリダイレクトが間違っている、(http httpsの違いも認識されます)
APIのキーとシークレットが間違っている、読み込めてない、(CLIで作ったコードはenv から読み込む仕様なので、heroku変数は参照しないはずですが、CLIのherokuデプロイは使ったことがないので定かでないです。)
ちなみに、最新のドキュメントからdeployコマンドが削除されているので、現在は非推奨かもしれません。
https://shopify.dev/tools/cli/reference
私のおすすめは、まずngrokでブラウザ経由でインストールできるようにしてから、herokuへのデプロイは、CLIではなくて、直接やるのが良いかと思います。
返答ありがとうございます。
解決しました。原因は、Heroku側の環境変数に設定されたHOSTの値だったようです。
誤: 'HOST: https://[Herokuアプリのドメイン] /'
正: 'HOST: https://[Herokuアプリのドメイン] '
ngrokでは正常にインストールに進んでいたので、設定されている環境変数をログに吐き出して突き合わせたら判明しました…。
お騒がせいたしました。
>ちなみに、最新のドキュメントからdeployコマンドが削除されているので、現在は非推奨かもしれません。
Node用のページには記載があったので使っていました。
2月に、新しい英語版AMAディスカッションボードで2週間にわたって初めてのコミュニティAMAを開催しました。
By SarahF_Shopify Mar 19, 2023不正注文やチャージバック被害はビジネスへ大きな被害を与えます、このブログでは簡単な防止策を紹介し、ストア保護を最適化します
By Mirai Mar 13, 2023Eコマースの自動化に関して大きな告知がございます。2022年3月22日より、Shopify FlowをAdvanced(プレミアム)プランの全てのご利用者様に提供を開始しました。...
By Nanami Feb 17, 2023