Yahoo!ショッピングWeb APIを使ってみた(接続~商品参照まで)

開発API,Yahoo

こちらのAPIは出店者向けの『ストア運営をサポートするAPI(プロフェッショナル出店ストア向け)』と一般向けの『ショッピング情報取得API』の2種類存在します。

今回は接続と商品参照だけですが、今後商品の更新などもやっていくので、『ストア運営をサポートするAPI(プロフェッショナル出店ストア向け)』 を使ってみようと思います。

事前準備(出店ストア向け)

1.Yahoo!JAPAN IDの取得

現在出店に利用しているYahoo!JAPAN IDで大丈夫です。

2.アプリケーション登録

WEB API利用のためにアプリケーション情報の入力を行います。

今回は出店ストア向けで登録を行うのでこちらの(https://e.developer.yahoo.co.jp/shopping/register)のページにて登録を行います。

登録した内容の例

アプリケーションの種類:サーバーサイド(Yahoo!ID連携v1)
※ 現在(2020年1月時点) 、Yahoo!ID連携v2は使えない
法人名:必須ではないので未入力でもOK
主に利用を考えているAPIを教えてください:必須ではないので未入力でもOK
アプリケーション名:好きな名前でOK 例)○○システム
サイトURL:ソースコードを置くサーバーにして下さい
アプリケーションの説明: 必須ではないので未入力でもOK
どちらの用途で発行しますか?:本番・テスト環境好きな方を選んでください

登録完了ページにて、『 アプリケーションID 』『シークレット』が発行されるのでメモしておく

忘れた場合は、アプリケーションの管理(https://e.developer.yahoo.co.jp/dashboard/)で確認可能

3.Yahoo! ID連携

出店ストア向けのAPIリクエスト時に必要な『アクセストークン』を取得するための認証になります。

やり方は2通りでSDKを利用する or SDKを利用しないです。

今回はPHPを使うのでSDKを利用する方法で行います。

※詳しくはこちら(https://developer.yahoo.co.jp/yconnect/v1/)

STEP1:SDKの導入と準備

リンク先よりSDKをダウンローし展開、アプリケーション登録で申請したサーバーへアップロード

ダウンロード(外部サイト)

STEP2:Yahoo! JAPAN IDログインボタンの作成

リンク先( https://developer.yahoo.co.jp/yconnect/v1/server_app/php/ )にて『アプリケーションID』『コールバックURL』を入力しスクリプトを生成します。

生成されたスクリプト内の『state』『nonce』に32Byte以上のランダムな英数字を設定

下記サンプルの様に生成されたスクリプトを張り付けたファイルを作成する

下記の様な動きをすればOKです。

生成したYahoo! JAPAN IDログインボタン
Yahoo! JAPAN IDログインボタン押下時に表示される画面

STEP3:コールバック処理の作成

STEP2にて作成したログインボタンにてログインを行うことで認可コードがコールバッグURLに付加されます。

そのため、コールバックURLに指定したPHPファイルにて認可コードを取得し、トークン発行処理を作成する必要があります。

下記サンプルになります。

この時発行される『リフレッシュトークン』を使いAPI利用時のアクセストークンキーを再取得するので、何かしらの方法で保存しておく必要があります。

※トークンの有効期限

・『リフレッシュトークン』の有効期限は4週間
  ※有効期限切れになった場合は、再度Yahoo!ログインを行う必要があります。
・『アクセストークン』の有効期限は1時間
  ※有効期限切れになった場合は、『リフレッシュトークン』を使い新たな『アクセストークン』を発行する必要があります。

STEP4:コールバックURLの追加

意外に忘れがちなのがアプリケーション情報へのコールバックURLの追加です。

これを忘れるとSTEP1~3まで実装してもトークンを取得することはでません。

アプリケーションの管理(https://e.developer.yahoo.co.jp/dashboard/) へアクセスし、STEP3で作成したPHPファイルのフルパスをコールバックURLに追加してください。

コールバックURL設定イメージ

動作確認サンプル(PHP)

長い下準備でしたが、いよいよ商品参照APIの動作確認です。

ここまでに取得した『アプリケーションID』『シークレット』『リフレッシュトークン』を設定し実行します。

※『ストアアカウント』『商品コード』に関しては自身の出店ストアのものをご用意ください。

ここまでに説明したSDKやファイル等がこの様な構成になっていれば動作確認できるかと思います。

ディレクトリ構成

root/
├ yconnect-php-sdk-master/ ← 『ダウンロードしたSDK(展開済)』
│ ├lib/
│ ├composer.json
│ ├LICENSE
│ └README.md
├yahooLogin.html ←『Yahoo! JAPAN IDログインボタン』
├callback.php ← 『コールバック先』
└sample.php ← 『商品参照サンプル』

感想

商品参照の自体は難しいものではありませんでしたが、Yahoo! ID連携v1による認証・アクセストークンの取得はちゃんと理解していないと、APIリクエスト時の認証エラー問題に気付かずコケる人がいるかもと感じました。

今回はここまでになります。

不明な点があれば気軽にコメントください。

それでは

開発API,Yahoo

Posted by takabou