Closed3

Shopify アプリ開発の世界をゆっくり歩いてみる 💧

maechanmaechan

認証・認可方法の種類について

アプリで大事な認証のはなし。
聖書[1]ではアプリの種類に応じて利用する認証方法が違うと記載されている。


https://shopify.dev/docs/apps/auth#types-of-authentication-and-authorization-methods

https://shopify.dev/docs/apps/auth#types-of-authentication-and-authorization-methods

認証・認可方法の種類

アプリが使用する必要がある認証または承認方法は、アプリの作成に使用したツールやアプリが使用するコンポーネントによって異なります。

  • Shopify CLI または Partner Dashboard を使用して作成されたアプリはすべて OAuth を使用します。
  • アプリが App Bridge を使用して Shopify の管理画面に埋め込まれている場合は、アプリもセッション トークンを使用します。
  • Shopify 管理画面で作成されたアプリは、Shopify 管理画面で生成されたアクセストークンを使用します。

Types of authentication and authorization methods

The authentication or authorization methods that you app needs to use depends on the tool that you used to create your app, and the components that your app uses.

  • All apps that are created using Shopify CLI or through the Partner Dashboard use OAuth.
  • If the app is embedded in the Shopify admin using App Bridge, then your app also uses session tokens.
  • Apps that are created in the Shopify admin use access tokens that are generated in the Shopify admin.

日本語でおk。

認証・認可方法をもう少し具体的に

1つ目のキーワードは「Shopify CLI または Partner Dashboard を使用して作成されたアプリ」で、これは Shopify CLI で作成された Hydrogen アプリや、下の「アプリを作成」から作成されたアプリの場合。

2つ目のキーワードは「アプリが App Bridge を使用して Shopify の管理画面に埋め込まれている場合」で、これはアプリが App Bridge という API で埋め込まれて利用される場合。

3つ目のキーワードは「Shopify 管理画面で作成されたアプリ」で、これはストア管理画面の「アプリ開発」から作成されたアプリの場合。ストアオーナー(マーチャント)のストア管理画面のことかな。

ちなみに OAuth は「Shopify パートナー」にしか提供されていないので、ここが他の認証方法と違う部分でもある。

これらの認証方法とそれに対応するアプリについて、参考になる対応表があったので貼っておきます。有り難や有り難や🙏


https://ths-net.co.jp/shopify_blog/php-shopify-app-1/

各 API のドキュメント

OAuth
https://shopify.dev/docs/apps/auth/oauth

認証フローは Authorization Code Grant に準拠している。

セッショントークン
https://shopify.dev/docs/apps/auth/oauth/session-tokens

アクセストークン
https://shopify.dev/docs/apps/auth/admin-app-access-tokens

どの認証方法も最終的には Shopify 側から渡された Access Token を取得して、それをリクエスト時にリクエストヘッダーにくっつけることで Shopify のデータにアクセスできるようになる。

もしも願いが叶うなら

Shopify 公開アプリの認証は OAuth が推奨で、アクセストークンの管理には外部のデータベースサービスとかを使う必要が出てきちゃう。せっかく Oxygen という独自のプラットフォームがあるのだから、もっと手軽に運用したいというワガママがあり。今後の Oxygen のアップデートとかでやってくれないかなあ。

脚注
  1. 公式ドキュメントのこと ↩︎

maechanmaechan

管理画面にカスタムアプリを表示させたかったら OAuth + Session しかない

アプリの認証方法はできればシンプルなほうがいいのは全人類が望んでいること。

管理画面(パートナー・ストアどちらでも)にアプリを表示させたかったら、認証方法は OAuth + Session の方法を取るしかない(一番シンプルではない方法)。なぜなら App Bridge を使う必要があるから。

https://shopify.dev/docs/apps/auth#types-of-authentication-and-authorization-methods

上のドキュメントにある認証方法の図式の中の "Embedded app" 分岐の部分がよく分かっていなかった。要はこれは「管理画面に構築したアプリを表示させたいかどうか」ってことでいいのかな。(まあ、そうだよねとなるが・・・)

逆にそれ以外は「外部のウェブサービスとかで Shopify のデータを利用する場合」ということかな。その場合はトークンとかキーを生成するだけなのに、管理画面で「アプリを作成する」フローを踏むのは少し分かりづらかった。

このスクラップは2024/04/27にクローズされました