リクエスト検証・トークン交換・Admin GraphQL の 3 つを「フレームワーク非依存の部品」として提供。Laravel / Symfony / Django / FastAPI、素の PHP・Python どれでも使える。旧 shopify-api-php / shopify_python_api は非推奨に。
shopify/shopify-app-php と PyPI の shopifyapp。PHP は composer、Python は pip で入る。どちらも一般提供(GA)。
Laravel / Symfony / Django / FastAPI、素の PHP・Python、どのスタックでも動く。
shopify-api-php は abandoned、shopify_python_api は inactive に。動くが新機能もセキュリティ修正も来ない。
両パッケージは同じプリミティブを公開する。フレームワーク全体を受け入れる必要はなく、必要なものだけを組み合わせる(compose)設計。
対象は Webhook、App Home、App Bridge リクエスト、App Proxy リクエスト、そして Checkout / POS / Admin / Customer Account / Flow の各エクステンションからのリクエスト。
Token exchange。client credentials と、交換済みアクセストークンのリフレッシュも含む。
自動リトライ処理つきの Admin GraphQL クライアント。
shop / idToken をそのまま使うのが正しい使い方。自前でリクエストをパースし直したり、再検証したりしないこと(記事の明示的な指示)。| 項目 | 旧 : shopify-api-php / shopify_python_api | 新 : shopify-app-php / shopifyapp |
|---|---|---|
| ステータス | 非推奨 Packagist は abandoned、PyPI は inactive | GA v1.0 到達 |
| 新機能 | 来ない | 継続的に開発 |
| セキュリティ修正 | 来ない | 提供される |
| 動作 | 引き続き動く | — |
| 移行期限 | なし 強制移行も削除日も設定されていない。準備ができたときに README のアップグレードノートに従って段階的に移行 | |
| アプリテンプレート | — | 無し PHP / Python 用テンプレートは提供されない。自分で scaffold する |
新規なら新パッケージを採用。既存アプリは即時対応不要で動き続ける。
今回の変更で何も変わらない。
React Router が引き続き「ほとんどの新規アプリにおける推奨パス」のまま。
記事の「新しい PHP / Python アプリを始める場合」の手順そのまま。
自分の言語のパッケージをインストール。
好みのフレームワーク/スタックで自分で組む。
例 : リクエストを検証 → トークンを交換。
検証が成功し、トークン交換がアクセストークンを返すことを確認。
composer require shopify/shopify-app-php
pip install shopifyapp
$shopify = new Shopify\App\ShopifyApp($clientId, $clientSecret);
$result = $shopify->verifyAppHomeReq($request);
$result から得られるもの
・$result->shop : 検証済みのショップ
・$result->idToken : アクセストークンに交換できる ID トークン
・log、およびクライアントに返すための response
Webhook / App Home / App Bridge / App Proxy / Checkout / POS / Admin / Customer Account / Flow ── 対応するメソッドを選ぶ。得られた値はそのまま使う(自前パース・再検証はしない)。
「全部入りフレームワークを採用する」のではなく、必要な部品だけを compose する設計。既存プロジェクトの構造を壊さずに差し込める。
アプリ全体の書き直しではなく 1 ルートずつ移行できるよう設計されている。旧ライブラリ利用者も強制移行・削除日は無いので、計画的に進められる。
両パッケージは同じ contract を実装し、同じテストスイートを通る。片方の改善がもう片方にも効く。PHP チームと Python チームで挙動差の議論をしなくて済む。
クライアント側に自動リトライ処理が入っている。自前でバックオフを書いていた箇所は置き換え候補。詳細なリトライ条件は記事に記載なし ── README で確認する。
PHP / Python 用のアプリテンプレートは提供されない。代わりに README が全プリミティブを文書化しており、AI コーディングツールへのコンテキストとして渡す使い方が公式に想定されている。「小さくて明示的な API = 人にも AI にも読める」という設計意図と一貫している。
shopify-api-php / shopify_python_api 依存。動いてはいるが、abandoned / inactive 扱いでセキュリティ修正が来ない。