質問編集履歴

2

2016/08/21 22:01

投稿

pecchan
pecchan

スコア568

test CHANGED
File without changes
test CHANGED
@@ -284,15 +284,13 @@
284
284
 
285
285
 
286
286
 
287
- 疑問2.だとした場合、今回の私のように、登録に使用するWebサイトが無い(あっても新規サイトしかない)人は、どうされてる
287
+ 疑問2.だとした場合、今回の私のように、登録に使用するWebサイトが無い(あっても新規サイトしかない)人は、どうてる?
288
-
289
-
290
-
288
+
289
+
290
+
291
- 疑問3.そもそも開発だけ行いたい、アフィリエイトは不要です、という人はどうやって開発してる
291
+ 疑問3.そもそも開発だけ行いたい、アフィリエイトは不要です、という人はどうやって開発してる?
292
-
293
-
294
-
295
- 疑問4.開発者の皆さんは、どうしてるの?
292
+
293
+
296
294
 
297
295
 
298
296
 

1

コード追加

2016/08/21 22:01

投稿

pecchan
pecchan

スコア568

test CHANGED
File without changes
test CHANGED
@@ -18,11 +18,229 @@
18
18
 
19
19
  2.登録が完了したので、アソシエイトタグ、アクセスキー ID、シークレットアクセスキーが取得出来ました。
20
20
 
21
+ 3.早速サンプルプログラムを動かしました。コードはサンプルのままですが以下のとおりです。
22
+
23
+
24
+
25
+ 「「Amazon API」の使い方を紹介します!最安値やランキング取得できるよ④-リクエストURLの作成(PHP)と結果(XML)の確認- 」
26
+
21
- 3.早速サンプルプログラムを動かしました。https://www.panzee.biz/archives/6262
27
+ https://www.panzee.biz/archives/6262
28
+
22
-
29
+ ```php
30
+
23
-
31
+ <!DOCTYPE html>
32
+
24
-
33
+ <html lang="ja">
34
+
35
+ <head>
36
+
37
+ <title>Amazon APIテスト</title>
38
+
39
+ <meta charset="utf-8">
40
+
41
+ </head>
42
+
43
+
44
+
45
+ <body>
46
+
47
+
48
+
49
+ <?php
50
+
51
+
52
+
53
+ //Enter your IDs
54
+
55
+ define("Associate_tag", "*****"); // アソシエイトタグ
56
+
57
+ define("Access_Key_ID", "******************"); // アクセスキー
58
+
59
+ define("Secret_Access_Key", "**************************************"); // シークレットキー
60
+
61
+
62
+
63
+ ItemSearch("All", "アナと雪の女王");
64
+
65
+
66
+
67
+ //Set up the operation in the request
68
+
69
+ function ItemSearch($SearchIndex, $Keywords){
70
+
71
+
72
+
73
+ $baseurl = "http://webservices.amazon.com/onca/xml";
74
+
75
+
76
+
77
+ // リクエストのパラメータ作成
78
+
79
+ $params = array();
80
+
81
+ $params["Service"] = "AWSECommerceService";
82
+
83
+ $params["AWSAccessKeyId"] = Access_Key_ID;
84
+
85
+ $params["Version"] = "2013-08-01";
86
+
87
+ $params["Operation"] = "ItemSearch";
88
+
89
+ $params["SearchIndex"] = $SearchIndex;
90
+
91
+ $params["Keywords"] = $Keywords;
92
+
93
+ $params["AssociateTag"] = Associate_tag;
94
+
95
+ $params["ResponseGroup"] = "ItemAttributes,Offers";
96
+
97
+
98
+
99
+ /* 0.元となるリクエスト */
100
+
101
+ $base_request = "";
102
+
103
+ foreach ($params as $k => $v) {
104
+
105
+ $base_request .= "&" . $k . "=" . $v;
106
+
107
+ }
108
+
109
+ $base_request = $baseurl . "?" . substr($base_request, 1);
110
+
111
+ echo "【0.元となるリクエスト】<br>" . $base_request . "<br>";
112
+
113
+
114
+
115
+ /* 1.タイムスタンプを付ける */
116
+
117
+ $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");
118
+
119
+ $base_request .= "&Timestamp=" . $params['Timestamp'];
120
+
121
+ echo "【1.タイムスタンプを付ける】<br>" . $base_request . "<br>";
122
+
123
+
124
+
125
+ /* 2.「RFC 3986」形式でエンコーディング */
126
+
127
+ $base_request = "";
128
+
129
+ foreach ($params as $k => $v) {
130
+
131
+ $base_request .= '&' . $k . '=' . rawurlencode($v);
132
+
133
+ $params[$k] = rawurlencode($v);
134
+
135
+ }
136
+
137
+ $base_request = $baseurl . "?" . substr($base_request, 1);
138
+
139
+ echo "【2.「RFC 3986」形式でエンコーディング】<br>" . $base_request . "<br>";
140
+
141
+
142
+
143
+ /* 3.「&」とか消して改行 */
144
+
145
+ $base_request = preg_replace("/.*\?/", "", $base_request);
146
+
147
+ $base_request = str_replace("&", "\n", $base_request);
148
+
149
+
150
+
151
+ echo "【3.「&」とか消して改行】<br>" . $base_request . "<br>";
152
+
153
+
154
+
155
+ /* 4.パラメーター名で昇順ソート */
156
+
157
+ ksort($params);
158
+
159
+
160
+
161
+ $base_request = "";
162
+
163
+ foreach ($params as $k => $v) {
164
+
165
+ $base_request .= "&" . $k . "=" . $v;
166
+
167
+ }
168
+
169
+ $base_request = substr($base_request, 1);
170
+
171
+ $base_request = str_replace("&", "\n", $base_request);
172
+
173
+ echo "【4.パラメーター名で昇順ソート】<br>" . $base_request . "<br>";
174
+
175
+
176
+
177
+ /* 5.もう一度「&」でつなぐ */
178
+
179
+ $base_request = str_replace("\n", "&", $base_request);
180
+
181
+ echo "【5.もう一度「&」でつなぐ】<br>" . $base_request . "<br>";
182
+
183
+
184
+
185
+ /* 6.3行を頭に追加 */
186
+
187
+ $parsed_url = parse_url($baseurl);
188
+
189
+ $base_request = "GET\n" . $parsed_url['host'] . "\n" . $parsed_url['path'] . "\n" . $base_request;
190
+
191
+
192
+
193
+ //$base_request = "GET\nwebservices.amazon.com\n/onca/xml\n" . $base_request;
194
+
195
+ echo "【6.3行を頭に追加】<br>" . $base_request . "<br>";
196
+
197
+
198
+
199
+ /* 7.よく分からんエンコーディング */
200
+
201
+ $signature = base64_encode(hash_hmac('sha256', $base_request, Secret_Access_Key, true));
202
+
203
+ $signature = rawurlencode($signature);
204
+
205
+ echo "【7.よく分からんエンコーディング】<br>" . $signature . "<br>";
206
+
207
+
208
+
209
+ /* 8.「Signature」として最後に追加 */
210
+
211
+ $base_request = "";
212
+
213
+ foreach ($params as $k => $v) {
214
+
215
+ $base_request .= "&" . $k . "=" . $v;
216
+
217
+ }
218
+
219
+ $base_request = $baseurl . "?" . substr($base_request, 1) . "&Signature=" . $signature;
220
+
221
+ echo "【8.「Signature」として最後に追加】<br>" . $base_request . "<br>";
222
+
223
+
224
+
225
+ echo "<a href=\"" . $base_request . "\" target=\"_blank\">結果</a>";
226
+
227
+ }
228
+
229
+
230
+
231
+ ?>
232
+
233
+
234
+
235
+ </body>
236
+
237
+ </html>
238
+
239
+ ```
240
+
241
+
242
+
25
- 、ここでエラーが返りました。
243
+ 上記を実行するとエラーが返りました。
26
244
 
27
245
 
28
246
 
@@ -64,10 +282,16 @@
64
282
 
65
283
  疑問1.AmazonAPI(Product Advertising API)を使った開発、具体的にはAmazonへの接続・認証には、Amazon アソシエイト・プログラムの登録だけでなく申請を通る必要がある?
66
284
 
285
+
286
+
67
287
  疑問2.だとした場合、今回の私のように、登録に使用するWebサイトが無い(あっても新規サイトしかない)人は、どうされてるの?
68
288
 
289
+
290
+
69
291
  疑問3.そもそも開発だけ行いたい、アフィリエイトは不要です、という人はどうやって開発してるの?
70
292
 
293
+
294
+
71
295
  疑問4.開発者の皆さんは、どうしてるの?
72
296
 
73
297
 
@@ -80,8 +304,6 @@
80
304
 
81
305
 
82
306
 
83
- 分かる方居またら教えいたけないでしょうか
307
+ 分かる方や、疑問にお応えしてさる方
84
-
85
-
86
-
308
+
87
- どうぞ宜しくお願い致します。
309
+ 居ましたらどうぞ宜しくお願い致します。