最近、ユーザーが私の Shopify アプリをアンインストールし、すぐに再インストールしたというケースがありました。すべてのユーザーを DB テーブルに保存しているため、これが問題を引き起こしました。
ログイン/インストールは次のように機能します。
- ユーザーは自分のショップの URL を教えてくれます
- アプリへのアクセスが許可されている example.myshopify.com/admin/oauth/authorize にユーザーを転送します
- そのショップの URL がローカル ユーザー DB に既に保存されているかどうかを確認します
- そうでない場合: パーマネント アクセス トークンを要求し、ユーザーをプラン選択ページに転送します
- はいの場合: ユーザー DB から保存された永久アクセス トークンを取得し、ユーザーをアプリにログインさせます。
アンインストール:
- ユーザーが自分の Shopify バックエンドでアプリをアンインストールする
- Shopify が Webhook をアプリに送信する
- そのユーザーのデータをユーザー DB から削除します
問題は、Webhook が時々遅れることです。ユーザーがアンインストールしてすぐに再インストールすると、アプリはインストールがログイン試行であると見なし、ユーザー DB に保存されている無効になったアクセス トークンを使用します。
認証ページからのリダイレクトに一時的なアクセストークンが含まれているかどうかを確認でき、含まれている場合は新規インストールになると思いましたが、アプリが既にインストールされていてもアクセストークンが返されるようです。
私の質問は次のとおりです。インスタント再インストールを適切に処理するにはどうすればよいですか? 確かに私が見落としているものがあります.Shopify APIにそのような巨大な「論理バグ」があるはずはありません?