FROM CACHE - jp_header

Shopify App とアクセストークンについて

camelmasa
Shopify Partner
83 10 27

Shopify App を作成しています。

サーバー側で Access Token を取得していますが、access mode (online mode or offline mode) によって取得できる情報とトークンの利用可能時間が異なるかと思います。

 

https://shopify.dev/concepts/about-apis/authentication#api-access-modes

offline mode はアクセストークンの期限なしですが、ユーザー固有の情報 (email など) は取得できない。

online mode はアクセストークンは約1日で期限切れになるが、ユーザー固有の情報が取得できる。

 

offline mode でアクセストークンを取得しつつ、online mode でユーザー固有の情報を取得できるのを確認していますが、その場合それぞれの認証が必要なので、2度認証が必要となっています。

 

質問は、

 

- そもそも online mode, offline mode の認識は間違っていないか

- 上記のケースの場合2度必要となっている認証を1度にする方法はあるか

 

になります。よろしくお願いします。

3件の返信3

junichiokamura
Community Manager
1200 280 506

> offline mode はアクセストークンの期限なしですが、ユーザー固有の情報 (email など) は取得できない。

> online mode はアクセストークンは約1日で期限切れになるが、ユーザー固有の情報が取得できる。

 

こちらはどこに記載のあるものでしょうか? 認可で何も指定しない場合(デフォルト)はofflineで、上記のページにあるようにassociated_user_scopeを指定した場合はonlineになり、それはアプリ側に任されているかと思います。

Senior Partner Solutions Engineer
camelmasa
Shopify Partner
83 10 27

> offline mode はアクセストークンの期限なしですが、ユーザー固有の情報 (email など) は取得できない。

> online mode はアクセストークンは約1日で期限切れになるが、ユーザー固有の情報が取得できる。

> こちらはどこに記載のあるものでしょうか?

 

両方とも Access Tkoken API のレスポンス内容から推察になります。

指定しない場合(デフォルト)は以下のようなレスポンス

 

{ 
  access_token: '459e7c8eaa40facd06822a411d5xxxxx', 
  scope: 'read_products,read_orders' 
}

 

grant_options[]=per-user を指定した場合

 

{
  access_token: 'd45969826b9e79432cbdd79bfdeaxxxx', 
  scope: 'read_products',
  expires_in: 86398,
  associated_user_scope: 'read_products',
  session: '2fad3bb49a547ff0a118664627ce4b9911984b99e30df27827e5689856d5xxxx',
  associated_user: {
    id: 41524035710,
    first_name: 'Saito',
    last_name: 'Masahiro',
    email: 'test@test.com',
    account_owner: true,
    locale: 'ja-JP',
    collaborator: false,
    email_verified: true
  }
}

のようになっていまして、`expires_in` が Token の利用可能期間だと推察していました。


が、Okamura さんがコメントされている associated_user_scope は知らなかったので、確認したいと思います。

camelmasa
Shopify Partner
83 10 27

> online mode はアクセストークンは約1日で期限切れになるが、ユーザー固有の情報が取得できる。

 

こちらに記載ありました。
https://shopify.dev/tutorials/authenticate-with-oauth#step-3-confirm-installation

 

expires_in: The number of seconds until the access token expires.

とあるので、online mode で取得したトークンは期限切れになりそうですね。