ヤフーショッピングAPIの「注文に関するAPI」のうち、orderList、orderInfo、orderChange
はリフレッシュトークンの有効期限が12時間です。(その他は4週間です。)
証明書認証を行うことで、12時間の有効期限を4週間に延長できます。
分かる人は一瞬でわかると思いますが、この意味を理解できず悩んでしまいました。
他で意味が理解できなかった方のためにまとめました。
まずは、ヤフーショッピングAPI利用の流れです。
ヤフーショッピングAPI利用の流れ
こちらのページにも書きましたが、以下のようになっています。
認可コードを取得
↓
認可コードを使ってアクセストークン、リフレッシュトークンを取得
↓
アクセストークンの期限が切れたら、リフレッシュトークンでアクセストークンを更新する
↓
リフレッシュトークンの期限がきれたら認可コードを取得
↓
認可コードを使ってアクセストークン、リフレッシュトークンを取得
↓
アクセストークンを使って処理を行う(バッチ処理のメイン部分)
↓
アクセストークンの期限が切れたら、リフレッシュトークンでアクセストークンを更新する
↓
アクセストークンを使って処理を行う(バッチ処理のメイン部分)
↓
リフレッシュトークンの期限がきれたら認可コードを取得
↓
認可コードを使ってアクセストークン、リフレッシュトークンを取得
↓
アクセストークンの期限が切れたら、リフレッシュトークンでアクセストークンを更新する
↓
リフレッシュトークンの期限がきれたら認可コードを取得
↓
………(以降同じ処理の繰り返し)
こちらのページに、
という記述があります。
これは、リフレッシュトークンの有効期限が通常は4週間ですが、以下の3つのAPIでは、12時間になってしまうという意味です。
- 注文検索API (orderList)
- 注文詳細API (orderInfo)
- 注文内容変更API(orderChange)
証明書の利用により、リフレッシュトークンの有効期間が通常通り4週間になるということです。
意味がわかりませんね。
「アクセストークンの期限が切れたら、リフレッシュトークンでアクセストークンを更新する 」という処理において、どのAPIを使用するかどうかは関係ありません。
なので、12時間以上経過していても、アクセストークン更新のタイミングでエラーが発生することはありません。
しかし、12時間以上経過したリフレッシュトークンで更新したアクセストークンを注文検索APIで使用すると次のエラーが返ってきます。
<?xml version='1.0' encoding='UTF-8' ?> <Error> <Message> AccessToken has been expired. This API session is shorter than another API.</Message> <Code> px-04102</Code> </Error>
つまり、
リフレッシュトークンの有効期間が12時間で切れるのではなく、
12時間経過したリフレッシュトークンで更新したアクセストークンの有効期限は切れているという状態だということです。
まとめると次のようになります。
証明書を利用せずに取得したリフレッシュトークンを使用した場合、12時間経過するとリフレッシュトークンで更新したアクセストークンは注文検索API、注文詳細API、注文内容変更APIで使えない。
証明書を利用して取得したリフレッシュトークンを使用した場合、4週間以内は、リフレッシュトークンで更新したアクセストークンが全てのAPIにおいて有効。
結局、認可コードを使ってアクセストークン、リフレッシュトークンを取得する部分で、証明書を利用するようにすれば良いということがわかりました。
これ全部間違っていました。
注文検索API (orderList)、注文詳細API (orderInfo)、注文内容変更API(orderChange)を使用する時に、証明書を利用することで、12時間以上経過していても、エラーが発生することはないということでした。
アクセストークン取得、更新のタイミングでは、証明書を使う必要はありません。