「Offline access tokens」に有効期限と更新機能を追加

Offline access tokensは、Shopify APIを利用する際に重要な役割を果たしますが、これまでのトークンは有効期限が存在せず、特にセキュリティ上の問題が生じる可能性がありました。しかし、新たなアップデートにより、これらのトークンは60分後に有効期限が切れるようになり、同時にリフレッシュトークンも提供されるようになりました。これにより、OAuth 2.0の仕様と整合性を持つとともに、セキュリティの強化が図られています。

有効期限の設定方法

OAuthでは、あなたのアプリがストアの代わりに行動することを許可します。一度マーチャントがあなたの要求するスコープを承認すると、トークンが発行されます。以下にその手順を示します。

  1. マーチャントをOAuthに誘導し、オフラインアクセスを要求します。
  2. Shopifyから以下のものが提供されます:
    • access_token APIリクエストを行うためのアクセストークン
    • expires_in アクセストークンの有効期限(秒数で表現、3600秒)
    • refresh_token 有効期限を更新した新しいアクセストークンを要求するためのトークン
  3. アクセストークンの有効期限が切れる前後で、refresh_tokenをトークンエンドポイントに交換して新しいオフラインアクセストークンを受け取ります。
  4. リフレッシュレスポンスで返された最新の値で保存されたトークンを更新します。

具体的なパラメータ、エラーコード、リトライのガイダンスについては、OAuthのドキュメンテーションを参照してください。

有効期限の実装方法

  • リフレッシュトークンは新しいアクセストークンを生成するための重要な情報なので、秘密管理ツールを使用したり、アクセス制限を設けたりして安全に保存してください。
  • 有効期限付きのトークンを実装するためには、以下の手順が必要です:
    • アクセストークンの60分間の有効期限を追跡します。
    • トークンの有効期限が切れる数分前や、401エラーを受け取ったときに、トークンを積極的に更新します。
    • リフレッシュレスポンスから最新の値を取得し、保存されているトークンを更新します。
    • オフライントークンが決して有効期限が切れないという前提をコードから取り除きます。
  • トークンのリフレッシュ失敗に関するログやアラートをモニタリングし、必要であれば新たなOAuth認証に切り替えます。

移行と互換性

  • この変更は追加的なもので、既存の永続的なオフライントークンは引き続き機能します。
  • トークン交換と認証コードの両方のタイプで利用可能です。クライアント資格証明の授与は既に有効期限とリフレッシュをサポートしています。

参考記事: Offline access tokens now support expiry and refresh