Harmonia!!

CAT長老さんのあれやらこれやら

アスキーアート リプレイ日記 日記 リンク サイトマップ

スポンサーサイト

tag:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ、カテゴリ等


Product Advertising API にJavaScriptで対応する

tag:Ajax JavaScript xml プログラム web AWS ProductAdvertisingAPI 
Product Advertising API にJavaScriptで対応する  [を] アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしいというニュースから一ヶ月。なんとかJavaScriptでのシグニチャ生成と、Ajaxの作成に成功したので、ソースをば。

必要なライブラリ

jssha256
 認証を作成する際に用いられているHMAC-SHA256への変換を、JavaScriptで可能にしてくれたライブラリです。これが無いと話になりません。

簡易ソースコード

簡易説明

 恐らくもっと綺麗に、そして簡潔なソースがそのうち出るだろうと信じつつ、ソースコードの説明をさせてもらいます。

 url_paraにはProduct Advertising APIで署名を作成する際に必要となる四行目……つまり、xml?以降のパラメータを代入してください。タイムスタンプとシグネチャは自動的に生成します。

 tmdataはタイムスタンプを作成しています。GMTを代入した後、半角スペースで一度配列に格納したあとで、Product Advertising APIで使用する形式の順序に並べなおしています。

 tmsとして作成されたタイムスタンプをurl_paraの末尾に追加した後、&で区切り、配列に格納します。ソートは結局アルファベット順で問題ないので、JavaScriptのsort()を使い、再び文字列を構築します。四行目が完成しました。

 GET\necs.amazonaws.jp\n/onca/xml\nは1行目から3行目のパラメータをまとめたもので、これに先ほど作成した四行目を追加し、sha_256にかけます。これでHMAC-SHA256による変換ができました。

 さて、ここからが苦労した点なのですが、HMAC-SHA256で作成されたものが2文字づつ、16進法で作成されている事になかなか気がつかず、出力された文字列をそのままBase64に変換したりしていました。当然、結果は異なり、ネコと趣味の日記の例題であれば、「i8h+iZhgAOyOT1EA9xF9brAa2nH29fdexDmWum0X74M=」にならなければならない所が、何度やっても「8bc87e89986000ec8e4f5100f7117d6eb01ada71f6f5f75ec43996ba6d17ef83」になり、無理やりリクエストを送信しても署名が違うと弾かれました。

 エンコード、デコードを色々と試すうち、ようやく、2文字ごとに区切られた16進数と言う事に気がつき、先ず二文字に区切るところから始めました。区切った二文字は2進法に変換します。Base64で変換表を用いる際、変換された2進法の桁数が8ケタ無いとずれが生じるため、足りない桁数を0で埋めます。

 256で作成される文字列は、そのまま2進法に直すと256ケタになります。これを6文字づつに区切り、変換表に照らし合わせていくわけですが、そのままですと4文字あまります。ですので、最後の二ケタに0を足し、258文字にします。改めて6桁ごとに区切り、表と照らし合わせながら、文字を一つ一つ出していきます。これで43文字、Base64に変換で来ました。Base64では四文字で1セットですので、このままでは1文字分足りません。よって、Base64のルールに従い、足りない文字数分=を追加します。

 +と/はURLにエンコードしなければなりませんが、JavaScriptが用意している関数では対応しきれないので、一つ一つ検索置換します。これでProduct Advertising APIで要求される署名の完成です。このスクリプトではurl_para_lengthと言う変数名でxml?以降を生成しているので、ご利用になる場合は、「url = 'http://ecs.amazonaws.jp/onca/xml?' + url_para_length」とすればシグネチャつきのURLを作成できます。

注意点

 あくまでもローカルでの作業でしか使えません。シークレットキーの公開は規約で禁止されています。自分もタグからAmazonアソシエイトが使用不可となりました。お任せリンクでいいじゃないと思うかもしれませんが、あれはブタのエサです。正直全く適切なものを表示してくれない。それよりも、タグ、カテゴリで商品名を指定しておけば、勝手にそのタグとカテゴリ名で検索させたほうがより適切なものを拾えるという発想でした。まず、これが使用不可能になります。Amazonが全体から検索してくれるライブリンクを作ってくれるのであればそれで解決する話ではあります。

 しかしながら、心のぶれた用語集で作成している静的な一覧の作成にはまだまだ有効ですので、同じような事をされている方で、自分と同じく躓いた方の為になればなと思い公開します。

躓いたポイント

 シークレットキーはURLエンコードする必要は無いようです。+とか/とかが入りますがそのまま入力してください。

 シグネチャはあっているのに何度も弾かれましたが、これはサーバーが不調だったためのようです。何も変更せず、食事を取ってから確認の為に動かしたら普通に署名が通りました。

 これからProduct Advertising APIに触れ、JavaScriptによるローカル専用のAjaxを学ばれる方は、かなりの勉強を必要とするかもしれませんが、xmlを弄れるようになるとwebの世界が変わるので、お時間あれば挑戦してみてください。

 最後になりましたが、makeSigを作成されたネコと趣味の日記さんに感謝します。makeSigのお陰で色々な検証が出来ました。有難うございました。

関連エントリー

スポンサーサイト

Ajax 2/2

tag:Ajax JavaScript xml プログラム web 

続きを読む »


タグ、カテゴリ等


Ajax 1/2

tag:Ajax JavaScript xml プログラム web 

続きを読む »


タグ、カテゴリ等


FC2ブログで関連エントリーを表示させるスクリプト

tag:JavaScript Ajax FC2リクエスト FC2ブログ 

誘導

2010/09/09  FC2がようやっと公式でサービスを追加したようです。以後はそちらの方が安定していると思いますので、移行が可能な方は順次差し替えをお願いします。長らくのご愛用有難うございました。 ⇒関連記事リストの設定

概要

 固定リンク画面でのみ対応。同一カテゴリから関連エントリーを引っ張ってきています。イメージサーバーが吹っ飛ばない限り正常に動作すると思います。


 上記ソースを、テンプレートの設定から使いたいところへコピペしてください。<!--/more-->の直下辺りを推奨します。

 もし、ソースの改変が出来そうであれば、jkl-parsexml.jsをダウンロード後、ご自身のブログにファイルアップロードし、そのURLをご利用してください。サーバーの負荷が減るはずです。なお改造は自己責任でお願いします。

動かないときは

 コピペの場所によっては動かない可能性があります。もし動かなかった場合は、下記ソースを試してみてください。プラグインに追加する場合はこちらを推奨します。


 それでも動かんぞと言う場合はURLつきでどこにコピペしたかコメントを残してください。

 できればテスト用のテンプレートで実験してから、そのテンプレートのプレビューページへのURLを残してもらえると確認しやすくて助かります。

バリエーション

Sort mix

 関連エントリーの表示順序を選択できるバリエーション。sortflagの数値を変更する事で新着順か古い順かを選択を可能にしたもの。rssの表示数よりも表示する関連エントリーの数が多い場合にのみ効果を発揮します。

 <!--/more-->直下推奨版。


 プラグイン推奨版。


Reverse

 RSSの表示順序とは逆に関連エントリーを表示させるバリエーション。ブログのRSSが新着順であれば古い順に表示されます。rssの表示数よりも表示する関連エントリーの数が多い場合にのみ効果を発揮します。

 <!--/more-->直下推奨版。


 プラグイン推奨版。

Not Permanent

 関連エントリーに、現在表示されているページを含めないもの。

 <!--/more-->直下推奨版。


 プラグイン推奨版。

起こりうるエラーの原因

コピペ位置が適切ではない。
対策:上記の2種類を試してみてください。

タイトルに'(半角のシングルクォーテーション)を使用している。
対策:タイトルの修正をお願いします。全角の’で代用していただけると助かります。

複数おなじタイトルが出る。
対策:仕様です。表示数を29にするなど、半端に多いとそうなる可能性があります。思い切って31にするか、5まで削ってください。

更新履歴

2009/09/03
 設計思想の過ちに気がつき、表示順序を選択できるようにしたバリエーションを公開。
2009/09/03
 rssの表示順序とは逆に表示させるバリエーションを公開。
2009/06/18
 現在表示されているページを含まないバリエーションを公開。
2009/04/30
 現在のページを太字で表示。

続きを読む »


タグ、カテゴリ等


タグ de YouTube

tag:共有プラグイン FC2ブログ アフィリエイト JavaScript Ajax 
(・∀・)
自分で使っていて結構面白い動画がヒットするので、花丸をあげたいプラグインです。

派生としてそのほか色々なxmlを取得して活用したかったのですが、同時に使うことが難しいらしく……断念しました。

断念したプラグインについてはまた後ほどこちらでアップしますが、共有プラグインには登録しません。
(・∀・)

関連

自作プラグインとテンプレindex
タグ de YouTube
タグから楽天アフィリエイト
タグからAmazonアソシエイト(アフィリエイト)
タグ de Amazon ストア指定

タグ、カテゴリ等


 | HOME | 

プロフィール

ちよろ

Author:ちよろ
大阪で活動するバンドマン。

メインはボーカル。

活動中のバンド
蒼天
 三国志テーマにやろうぜってバンド
音歪
 オーバードライブ。セッションで俺、ボーカル。
仔猫夜叉
 陰陽座。ギターデス。

バンド履歴
蒼天
HARMONIA
MARZie-DEKKER
HARMONIA

ヘルプなどで在籍したことのあるバンド
Mitanie Crue
邪影修羅神

カテゴリ

音楽活動 (206)
ライブ (118)
歌ってみた (85)
その他 (4471)
今日のやる夫スレ (12)
遊んだの (177)
読んだの (11)
見たの (3)
使ったの (3)
まとめらしきもの (401)
日記的なるもの (198)
楽天 (3665)
作ったの (1189)
描いたの (0)
アスキーアート (1176)
プログラムとか (11)
FLASH (2)
リンク集 (2)
サイトマップ (10)

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

ブロとも申請フォーム

この人とブロともになる

感謝感激相互リンク様

お世話になってます

Ad

タグ、本文切り替えサーチ

 

RSSフィード

リンク

このブログをリンクに追加する

カウンター

ショートカット

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。