頑張らない!でも諦めない!必死にならずにええかげん

AmazonアソシエイトのSigned Requests HelperでアフィリエイトURLを生成する

AmazonアソシエイトのAPI(Amazon Product Advertising API)を利用するには、
URLの生成時に署名を付加する必要があります。
その為、ちょっとURLで取得したデータを確認するのが面倒なのですが、
署名を自動で行って動作確認ができるサイトが公式に用意されています。
クエリ動作の確認などが都度行えますので便利です。

AmazonアソシエイトのSigned Requests HelperでアフィリエイトURLを生成する

AmazonアソシエイトのSigned Requests Helperは以下のページです。

Signed Requests Helper – Amazon Product Advertising API

 

「AWSAccessKeyId」「AWS Secret Access Key」の入力

では、実際に利用してみます。
最上部の「AWSAccessKeyId」「AWS Secret Access Key」フィールドに各自のキーを入力します。

キーは「認証キー(アクセスキー/シークレットキー)」のセットで、
以下手順で確認ができます。

signed-requests-helper_st01

アクセスキー/シークレットキーの入力・Signed Requests HelperでURLを生成

 

リクエストURLの準備

AWSAccessKeyIdとAWS Secret Access Keyのセットをフィールドに入力したら、
発行するクエリを含むURLを作ります。

Amazonアソシエイト・アフィリエイトAPI(Amazon Product Advertising API)の
リクエストを行う際の必須となるパラメータは原則3つです。

それに付随して必要になる商品IDなどを付加しURLを組み立てますが、
Signed Requests Helperでは「AWSAccessKeyId(上記で入力済)」は、
テキストフィールドのURLに入力がなくても自動で補完してくれます。

以下の様な例です。

http://ecs.amazonaws.jp/onca/xml?Operation=ItemLookup&IdType=ASIN&ItemId=B0002U3ID4

これと別に、アフィリエイトのトラッキングIDが必須になりますので、
トラッキングID(AssociateTag)を付加します。

http://ecs.amazonaws.jp/onca/xml?Operation=ItemLookup&IdType=ASIN&ItemId=B0002U3ID4&AssociateTag=xn--n8j2sc8dt093e-22

 

リクエストURLをテキストエリアへ貼り付け

作成したURLを「Unsigned URL:」のテキストエリアに入力します。
入力したら「Display Signed URL」ボタンをクリックします。

やることはこれだけです。

signed-requests-helper_st02

リクエストURLの組み立て・Signed Requests HelperでURLを生成

※ここではアクセスキーなどもフィールドに入力しています。(画像はイメージです)

 

前述の例を入力して実行すると、最下部の「Signed URL:」にこのようなURLが表示されます。

http://ecs.amazonaws.jp/onca/xml?AWSAccessKeyId=AKIAJKGFBRV5P3NCKQ2Q&AssociateTag=xn--n8j2sc8dt093e-22&IdType=ASIN&ItemId=B0002U3ID4&Operation=ItemLookup&Timestamp=2018-08-24T05%3A47%3A56.000Z&Signature=Vh0fIPjQldN39UNHcC6VpyBkUeSV8rsJDF0QkXkL3QY%3D

 

赤字で示したパラメータは、このWeb画面で自動的に補完されたものです。
本来必須とされている「Service=AWSECommerceService(固定)」がありませんが、
それでもレスポンスは正しく返してきます。

「Service=AWSECommerceService」は念のため付けておく、
おまじない程度でいいかもしれません。

 

表示されている各テキストエリアはAWSが処理した各結果が表示されてきます。
基本的には自分でURLを生成する際にも、
この手順でプログラムを生成すればいいというヒントにもなります。

各項目は以下の様なイメージです。

  • 「Unsigned URL:」目的のURLを入力する
  • 「Name-Value Pairs:」クエリ変数名と値のセットを1行ごとに表示
  • 「Sorted Pairs:」クエリ変数名で昇順ソートしたもの
  • 「String-To-Sign:」リクエストURLの署名対象文字列(URL)
  • 「Signed URL:」URLに署名を行って生成されたURL(実発行URL)

 

このステップがそのまま署名を行うステップと同じと言う事です。

 

この場合、得られたXMLは以下のようになっています。

 

商品情報が最低限返されているのがわかります。

ただこれでは足りない情報もあるでしょうから、
ちゃんと「&ResponseGroup=」で受け取りたい情報を指定します。

 

プロモーション(btm)

Google or AdMax Promotion (it)

商品に割当てられている画像を取得する例

今回の例では、APIを利用して対象商品に紐づけられている画像のリストをXMLで取得してみます。

何故かって?Amazonアフィリのツールなど様々なリンク生成サービスでは、
取得してくる画像が代表画像(Primary)だけしか取得できないケースが多いからです。
今回、2番目以降の画像が欲しく、この記事を作成するに至りました。

 

Signed Requests Helper中程にサンプルURLが書かれていますので参考にします。

Here is an sample unsigned URL you can use to get started with:
http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService
&Version=2011-08-01
&AssociateTag=PutYourAssociateTagHere
&Operation=ItemSearch
&SearchIndex=Books
&Keywords=harry+potter

 

URLのレスポンスで受け取る対象を指定するには、
以下の「Response Element」が利用できます。

Response Elements – Product Advertising API

今回は以下のようなURLで実行します。

signed-requests-helper_st02

リクエストURLの組み立て・Signed Requests HelperでURLを生成

 

各行に分割するとこのような要求です。

 

ここでタイムスタンプは不要なの?と思われるかもしれませんが、
このツールではタイムスタンプと署名を補完して、URLの生成を行ってくれます。

実行結果は以下のようになっています。

signed-requests-helper_st03

生成された署名済みURL・Signed Requests HelperでURLを生成

 

生成されたURLはこのようなURL(Signed URL:)です。
リンクの有効時間がタイムスタンプから一定時間内に限られていますので、
以下URLはしばらくすると無効になります。

その為、毎回プログラムなどを利用して都度生成する必要があります。

http://ecs.amazonaws.jp/onca/xml?AWSAccessKeyId=AKIAJKGFBRV5P3NCKQ2Q&AssociateTag=xn--n8j2sc8dt093e-22&IdType=ASIN&ItemId=B0002U3ID4&Operation=ItemLookup&ResponseGroup=Images&Service=AWSECommerceService&Timestamp=2018-08-20T08%3A02%3A19.000Z&Signature=eoPp%2B37Wrv%2BZtHKrIVnmOMyNIxw3U8zL57w%2FBkJ6N74%3D

アクセスすると、このようなXMLを受け取る事ができます。

 

XMLに対象のASIN(商品コード)に紐づいている画像の各サイズが表示されています。

ちなみに、普通にアソシエイトの商品リンクを生成するとこのような感じです。

amazon Promotion

画像単独でイメージ大を選択しても、画像は代表画像しか選択することができません。

amazon Promotion

 

しかし、Amazonのページを確認すればわかりますが、
この商品には4つの画像で商品イメージの確認ができます。
この4つのイメージを上記XMLではURLが返されています。
さすがAPI ^^

※ギャラリー表示の為、保存し表示しています。(著作権等はAmazonに帰属します)

各画像URL

https://images-fe.ssl-images-amazon.com/images/I/61qka0tHyQL.jpg
https://images-fe.ssl-images-amazon.com/images/I/61zVZrwks5L.jpg
https://images-fe.ssl-images-amazon.com/images/I/41MUmXglaFL.jpg
https://images-fe.ssl-images-amazon.com/images/I/41htSCQAw9L.jpg

このようにして、APIなら商品に指定されているその他の画像のURLも取得することができます。

 

エラーメッセージはXML要求をして確認する

尚、実行時にはアソシエイトIDなど必須の項目があります。
不足している場合はXMLにてエラーメッセージの確認ができます。

 

画像以外のアフィリリンクを取得できるように変更

さて、今まではXMLで他の画像を要求するところまででした。
商品に対する発リンクURLが得られていませんでしたので要求を変更します。

画像の取得で利用したクエリ文字列に含まれていた以下の変数の値を変更します。

&ResponseGroup=Images

今回はこのように変更しています。

ResponseGroup=Images,Small

※大文字小文字は区別されます。smallでは動作しません。

 

Small」指定は「ResponseGroup」を指定しなかった場合のデフォルト動作です。

備考には以下の様な記述があります。

この応答グループは、ItemLookup、ItemSearch、またはSimilarityLookupとともに、レスポンス内の項目に関する基本情報を返すためによく使用されます。

 

似た「ResponseGroup」に「Large」と「Medium」もありますが、
こちらは以下のように書かれていますので、運用環境では使用しないことをお勧めします。

Large(又はMedium)応答グループは、応答内の項目に関する多くの情報を返します。 Large(又はMedium)レスポンスグループは、デモンストレーション目的のみです。 本番用アプリケーション用ではありません。 アプリケーションでは、必要な応答グループを正確に使用して、待ち時間と応答サイズを削減する必要があります。

 

ただ、以下ヘルプには特にプロモーション目的の記述はありませんでした。
使うこと自体は問題がない模様。

Large レスポンスグループは、Amazon リテール Web サイトにあるような商品の詳細ページを構築するのに適しています

(抜粋引用)Large レスポンスグループ|Product Advertising API

 

受け取れるレスポンスは以下のようになります。
要求URLは以下です。

http://ecs.amazonaws.jp/onca/xml?AWSAccessKeyId=AKIAJKGFBRV5P3NCKQ2Q&AssociateTag=xn--n8j2sc8dt093e-22&IdType=ASIN&ItemId=B0002U3ID4&Operation=ItemLookup&ResponseGroup=Images%2CSmall&Timestamp=2018-08-24T06%3A07%3A58.000Z&Signature=3Thd1PQED3V9KUnj%2F21UIFP%2F%2FN5zigTiQvHt%2FxrXmG4%3D

実際にリクエストするとこのようなXMLが返されます。
どうでしょうか、画像以外の商品詳細ページのURL(DetailPageURL)などが返され、
ちゃんとトラッキングIDが含まれたURLになっています。(アフィリンクになっている)

 

後は、得られたXMLをプログラムで走査し、
必要な情報を使ってアフィリエイトリンクを作るという流れになります。

この「Signed Requests Helper」が行っている署名ステップは、
一つずつ見ていくと、プログラムを組み立てる場合の理解を深めてくれます。

 


公開日:

最後までお読みいただきありがとうございました。

ページ
すべて展開 | すべて省略

Rakuten Promotion

ブログ記事のご紹介
すべて展開 | すべて省略