困ったー

WIN10・アプリ・ゲームで困ったことを調べてみた

AmazonのProduct Advertising API Ver5移行のメモ 旧版との違い

AmazonのProduct Advertising API (PA-API)がバージョンアップ。

旧APIの方は動作しなくなるので変更しないといけません。3/10頃までだったので現在は動作しません。

AmazonのProduct Advertising API Ver5とは?

amazon

アマゾンの商品取得用APIです。

 

今回は大幅変更となるバージョンアップが実施されました。

 

旧版との違いは?

大幅変更に伴い、動作速度の改善が図られたとのことです。

確かにアマゾンの商品APIは若干重いかなという感じも無きにしも非ず。このような動作改善は助かります。

 

しかし今までのプログラムは、アクセスキーなどを更新しただけでは動きませんでした。

ライブラリを入手してだいぶ書き直さないといけないと思います。

 

キーを取得しなおす

以下より取得しなおします。

最大2つなので、生成できない人は先に削除しておきましょう。

https://affiliate.amazon.co.jp/assoc_credentials/home

f:id:apicode:20200311092124p:plain

 

シークレットキーは作成時のみ表示されます。

キーを作った段階で表示されるシークレットキーはきちんと控えておく必要があります。

 

SDKをダウンロード

ライブラリやサンプルは以下より入手できます。

https://webservices.amazon.com/paapi5/documentation/quick-start/using-sdk.html

f:id:apicode:20200311092325p:plain

 

プログラムを作る

アイテム情報を取得する場合にはGetItems.phpを利用します。

f:id:apicode:20200311092534p:plain

 

アクセスキー、シークレットキー、アフィリエイト用タグを書き換えます。

$config->setAccessKey('************');
# Please add your secret key here
$config->setSecretKey('***********************');

# Please add your partner tag (store/tracking id) here
$partnerTag = '*********************-**';

 

動作させるには以下ページが参考になります。

4.0から大きく変わった「PA-API v5.0(Amazon API)」の使い方! | HPcode

  

ホストとリージョンも変更したほうがいいようです。

$config->setHost('webservices.amazon.co.jp');
$config->setRegion('us-west-2');

 

サンプルPHPではECHOで書籍名や価格などを表示できるようになっていますので、あとはそれを改変していけば取りあえず動くものになると思います。

 

 

画像を取得するには?

「GetItems.php」では、リンクURLや価格、タイトルは書きだしてくれますが、画像ファイルまでは表示してくれません。

 

ちゃんと探せばあると思いますが、調べるのが面倒なので裏技を利用します。

 

ASINコードがわかればアマゾン画像をそれだけで取得できます。

 

やり方は簡単で「http://images-jp.amazon.com/images/P/<ASIN>.09.MZZZZZZZ」としてASINコードを書き換えるだけで画像が取得できます。

 

大きいサムネなら末尾を「LZZZZZZZ」へ変更します。

 

これならAPIでコールしなくても画像リンクは作れるのでらくちんです。

参考:Amazon の商品画像を取得する

 

(更新 2020/4/13)

このほうほうだと画像がでなくなったようです。TT

 

(更新 2020/4/17)

GetItems.phpでは大きい画像を取得(Images.Primary.Large)といった指定を明示的に行います。

$resources = array(
GetItemsResource::ITEM_INFOTITLE,
GetItemsResource::OFFERSLISTINGSPRICE,
"Images.Primary.Large");

 

あとは同じくGetItems.phpで、「getImages,getPrimary,getLarge」などの関数を経由して画像を取得します。関数ベースなので追っていくのがちょっと面倒ですが、「Items.php」「Images.php」などを探していけば関数を探せます。

$item->getImages()->getPrimary()->getLarge()["uRL"];

 

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ