- » Kindle
- » iBooks
- » kobo
- » B.W.
- 400円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 300円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 600円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 100円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 490円
doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍
amazon のAPIで認証が必要になる
英文のメールが来ていたのは知ってた。ふーん、なんか変わるのか、ぐらいで流し…てたら、日本語のメールも来る。AWSという名称を変更するそうだ。
てのは、どうでもよくて、アマゾンにデータを取りにいくのに認証が必要になるらしい。それも5月11日から。猶予期間は3ヶ月ほどあるらしいけど、それまでにパラメータや認証キーを仕込みなおさないとまずいぢゃん。
当然ながら、今日時点では、ありがたく使わせていただけそうな例もまだないのでメモだけ。
新しくパラメータにTimestampが必要
RESTのURI+αを、SECRET KEYをキーにしてSHA256でHASHしてSignatureを生成してくっつける、らしい。
https://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html
perl のDigest SHA
https://search.cpan.org/~mshelor/Digest-SHA-5.47/lib/Digest/SHA.pm
って、まだ全然わかってないんだけど。
use Digest::SHA qw(hmac_sha256_base64);
my $key = 'ABCD0987';
my $data = 'aiueo12345xyz';
my $digest = hmac_sha256_base64($data, $key);
print $digest;
認証のための署名はこれで作れる。
情報収集して対応しないといけません。
[05/11 10:56:47]
$digest .= '=' while length($digest) % 4;
4で割って余りが出ないように、「=」で埋める必要があるらしい。
https://blog.livedoor.jp/dankogai/archives/51211577.html
[05/11 23:46:32]
てことでチェックできた。
従来のURIにTimestampを追加。
Timestamp=2009-05-11T23:34:12Z
署名のためのデータを上記URIから作る。&でバラしてkeyをsortして並べ替えてURLエンコードしておく。
GET
webservices.amazon.co.jp
/onca/xml
上記URI
の4行のデータ。これをアマゾンの秘密鍵をキーに、SHA256でハッシュ化して署名を作る。
URIの最後にURLエンコードした署名をくっつけてできあがり(&Signature=署名)
と、エラソに書いたけど、ハマリがひとつ。何度やっても署名が間違ってる、と撥ねられて、しばし悶絶。あーだこーだパラメータをひとつずつ潰していったら、URLエンコードが原因でびっくりした。
今までずっと
s/(W)/sprintf("%%%02X",unpack("C", $1))/eg
とやっていて何も問題なかったんだよなあ。
# RFC3986
# URI の生成を行うものは
# ALPHA (%41-%5A と %61-%7A),
# DIGIT (%30-%39), hyphen (%2D),
# period (%2E), underscore (%5F), tilde (%7E)
# の範囲におけるパーセントエンコードされたオクテットを
# 生成すべきではない
ううううむ。てことで
s/([^0-9a-zA-Z~._-])/sprintf("%%%02X",unpack("C", $1))/eg
にしたら、無事通過。
ひっかかったのはTimestampの2009-05-11のハイフンあたりだったようだ。
とりあえずチェックスクリプトはこれでOKだったんで、週末にでも実装してしまおう。
参考:
https://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?BasicAuthProcess.html
https://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html
↑こいつを見てたら、ハイフンがエンコードされてないんで、変だなあ、と。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」