質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.80%

【Amazon API】Aamzon のProduct Advertising APIを使って開発するには、Amazonアソシエイト・プログラムの審査に通る必要がありますか?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,790

pecchan

score 350

Aamzon APIを使った開発をしたいです。

作りたい物は、個人的に利用する商品検索ツールです。
Amazonのアフィリエイトは利用しません。

手順通りに
1.Amazon アソシエイト・プログラムの登録申請を行いました。
2.登録が完了したので、アソシエイトタグ、アクセスキー ID、シークレットアクセスキーが取得出来ました。
3.早速サンプルプログラムを動かしました。コードはサンプルのままですが以下のとおりです。

「「Amazon API」の使い方を紹介します!最安値やランキング取得できるよ④-リクエストURLの作成(PHP)と結果(XML)の確認- 」
https://www.panzee.biz/archives/6262

<!DOCTYPE html>
<html lang="ja">
<head>
<title>Amazon APIテスト</title>
<meta charset="utf-8">
</head>

<body>

<?php

//Enter your IDs
define("Associate_tag", "*****"); // アソシエイトタグ
define("Access_Key_ID", "******************"); // アクセスキー
define("Secret_Access_Key", "**************************************"); // シークレットキー

ItemSearch("All", "アナと雪の女王");

//Set up the operation in the request
function ItemSearch($SearchIndex, $Keywords){

    $baseurl = "http://webservices.amazon.com/onca/xml";

    // リクエストのパラメータ作成
    $params = array();
    $params["Service"]          = "AWSECommerceService";
    $params["AWSAccessKeyId"]   = Access_Key_ID;
    $params["Version"]          = "2013-08-01";
    $params["Operation"]        = "ItemSearch";
    $params["SearchIndex"]      = $SearchIndex;
    $params["Keywords"]         = $Keywords;
    $params["AssociateTag"]     = Associate_tag;
    $params["ResponseGroup"]    = "ItemAttributes,Offers";

    /* 0.元となるリクエスト */
    $base_request = "";
    foreach ($params as $k => $v) {
        $base_request .= "&" . $k . "=" . $v;
    }
    $base_request = $baseurl . "?" . substr($base_request, 1);
    echo "【0.元となるリクエスト】<br>" . $base_request . "<br>";

    /* 1.タイムスタンプを付ける */
    $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");
    $base_request .= "&Timestamp=" . $params['Timestamp'];
    echo "【1.タイムスタンプを付ける】<br>" . $base_request . "<br>";

    /* 2.「RFC 3986」形式でエンコーディング */
    $base_request = "";
    foreach ($params as $k => $v) {
        $base_request .= '&' . $k . '=' . rawurlencode($v);
        $params[$k] = rawurlencode($v);
    }
    $base_request = $baseurl . "?" . substr($base_request, 1);
    echo "【2.「RFC 3986」形式でエンコーディング】<br>" . $base_request . "<br>";

    /* 3.「&」とか消して改行 */
    $base_request = preg_replace("/.*\?/", "", $base_request);
    $base_request = str_replace("&", "\n", $base_request);

    echo "【3.「&」とか消して改行】<br>" . $base_request . "<br>";

    /* 4.パラメーター名で昇順ソート */
    ksort($params);

    $base_request = "";
    foreach ($params as $k => $v) {
        $base_request .= "&" . $k . "=" . $v;
    }
    $base_request = substr($base_request, 1);
    $base_request = str_replace("&", "\n", $base_request);
    echo "【4.パラメーター名で昇順ソート】<br>" . $base_request . "<br>";

    /* 5.もう一度「&」でつなぐ */
    $base_request = str_replace("\n", "&", $base_request);
    echo "【5.もう一度「&」でつなぐ】<br>" . $base_request . "<br>";

    /* 6.3行を頭に追加 */
    $parsed_url = parse_url($baseurl);
    $base_request = "GET\n" . $parsed_url['host'] . "\n" . $parsed_url['path'] . "\n" . $base_request;

    //$base_request = "GET\nwebservices.amazon.com\n/onca/xml\n" . $base_request;
    echo "【6.3行を頭に追加】<br>" . $base_request . "<br>";

    /* 7.よく分からんエンコーディング */
    $signature = base64_encode(hash_hmac('sha256', $base_request, Secret_Access_Key, true));
    $signature = rawurlencode($signature);
    echo "【7.よく分からんエンコーディング】<br>" . $signature . "<br>";

    /* 8.「Signature」として最後に追加 */
    $base_request = "";
    foreach ($params as $k => $v) {
        $base_request .= "&" . $k . "=" . $v;
    }
    $base_request = $baseurl . "?" . substr($base_request, 1) . "&Signature=" . $signature;
    echo "【8.「Signature」として最後に追加】<br>" . $base_request . "<br>";

    echo "<a href=\"" . $base_request . "\" target=\"_blank\">結果</a>";
}

?>

</body>
</html>

上記を実行するとエラーが返りました。

エラー内容↓
Your [わたしのアクセスキー ID] is not registered as an Amazon Associate. Please register as an associate at https://affiliate-program.amazon.com/gp/associates/join/landing/main.html.

エラーについて調べると、
(アクセスキーの認証はできてるけど)アクセスキーがAmazonアソシエイトのものとして登録されていない
というエラーのようです。

心当たりとして
Amazon アソシエイト・プログラムの登録は行いましたが、審査には落ちてしまいました。

理由は、「 Webサイトが未完成または作成したばかりであるため審査が行えない場合」に当てはまったようです。

ここで幾つか疑問が生じました。

疑問1.AmazonAPI(Product Advertising API)を使った開発、具体的にはAmazonへの接続・認証には、Amazon アソシエイト・プログラムの登録だけでなく申請を通る必要がある?

疑問2.だとした場合、今回の私のように、登録に使用するWebサイトが無い(あっても新規サイトしかない)人は、どうしてる?

疑問3.そもそも開発だけ行いたい、アフィリエイトは不要です、という人はどうやって開発してる?

以上です。

分かる方や、疑問にお応えしてくださる方
居ましたらどうぞ宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2016/08/22 08:04

    登録時にテストはこっちを使えとか書いてませんか?

    キャンセル

  • pecchan

    2016/08/22 09:38

    有難う御座います。
    ご質問は、
    サンプルプログラムのことでしょうか?
    それともAmazon アソシエイト・プログラムのことでしょうか?

    キャンセル

  • sug_kei1126

    2017/06/03 17:21

    はじめまして。私も現在同じような疑問を持って質問を読ませていただいたのですが、pecchanさまはどのようなサイトで審査に通過なさったのかお伺いしてもよろしいでしょうか?

    キャンセル

  • pecchan

    2017/06/04 07:22 編集

    sug_kei1126様 約1年前で具体的なURLは失念しましたが、正式なAmazonのサイトでした。登録にあたりWebサイトが必要かどうかについては、必要でした。ちょっとした開発だけ行いたい場合も、サイトが必要になります。そのサイトがあまりに今作ったようなやつだと審査に通らないようです。

    キャンセル

回答 1

checkベストアンサー

+1

はじめまして。
さくっと私がわかる範囲で。

疑問1.アソシエイト・プログラムの登録だけでなく申請を通る必要がある?
はい。通らないとAPIの結果がもらえません。
アフィリエイトIDが不要なAPIは不要です。

疑問2.登録に使用するWebサイトが無い(あっても新規サイトしかない)
会社概要とかでも行けます。
システム開発の案内でいいかと思われます。

疑問3.そもそも開発だけ行いたい、アフィリエイトは不要です、という人はどうやって開発してる?
Amazon提供のテストページでAPIの確認を行い、結果が返ってくることを確認して作りこむ方法になります。
実際に動かして確認したい場合は、アフィリエイトのIDが不要なAPIならIDがなくても実行できますが、アフィリエイトIDが必須のAPIを用いるなら必要です。

未確定な情報ですが、審査は一度Amazonのアカウントでクレジット購入をすると、実在証明となるのか審査が通りやすくなります。
私は会社概要とアフィリエイトIDを発行したいアカウントでクレカ購入して審査を通しました。

※ 古い記憶なので、開発方法については間違っているかもしれません。
ご了承ください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/23 16:25

    朝から再登録→再審査→先ほど審査に通ったため早速動かしてました。

    無事に進めました。

    ちなみにサンプルコードは古いせいか、やはりエラーになります。

    教えていただいたように、Amazon提供のテストページで動かすと正常に取得出来ました。
    それを元に進めていきます。
    本当に有難う御座いました!

    キャンセル

  • 2016/08/23 21:35

    審査通ったようで何よりです。
    AmazonAPIはちょっとややこしいですが、頑張ってくださいね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • PHPに関する質問
  • 【Amazon API】Aamzon のProduct Advertising APIを使って開発するには、Amazonアソシエイト・プログラムの審査に通る必要がありますか?