holmesのメモ帳

始めなければ始まらない。頭の中で考えているだけなのは終わりにして手を動かして色々と作っていこう。

カラーミーショップのAPIを.NETから使ってみた

「カラーミーショップ」APIを全プランで無料提供開始!


カラーミーショップのAPIが全てのプランに無料公開というニュースを見たらちょっと作ってみたいものが出てきたので.NETから操作できないか試してみた。

開発環境はVisualStudio Professional 2012
言語はVisualBasic




まずはカラーミーのデベロッパー登録
http://api.shop-pro.jp/developers


仮登録されメールが送られてくるのでそこから本登録

ログインした後でアプリケーションの登録

f:id:holmes:20131018165635p:plain

アプリケーション名は適当に入力

「Webアプリケーション以外を作成する場合は、
リダイレクトURLに urn:ietf:wg:oauth:2.0:oob を登録してください。」
とあるのでリダイレクトURLにはそのまま「urn:ietf:wg:oauth:2.0:oob」を入力



認証方式はOAuthを使っているというのでまずはそこから調査

そういえばTwitterクライアントのTweenがOAuth対応になっているし
オープンソースだったようなと思い探してみるとTweenの作者きりさんのブログにこんな記事が

OAuth(xAuth)のVB.net実装サンプル

すばらしいです。
このライブラリをそのまま使わせてもらいました。



まずはWindowsのFormにWebBrowserのオブジェクトを貼り付け認証ページを表示させます。
必要なパラメータはこのページの「2. 認証ページを利用者に表示します」を参考にします。

f:id:holmes:20131018173856p:plain

ここでカラーミーショップの管理者IDとパスワードを入力してログインします。

すると認可コードを取得する事ができます。
このページの「3. 認可コードを取得」にあるWebViewを用いる場合を参考に認可コードを取得。


次にこの取得した認可コードをアクセストークンに交換します。
「4. 認可コードとアクセストークンを交換」の部分。

結果はJSON形式で返ってくるのですが
.NETでJSONを扱うにの何が良いか調べたら出てきたのが「Json.net」
これはNUGETでプロジェクトに取り込めます。


これでやっとアクセストークンを取得する事ができました。

今後はこのアクセストークンを使ってカラーミーショップのデータにアクセスしていきます。

APIの操作方法はこちらのページを参考にします
カラーミーAPIインターフェイス v1

例えば店舗情報から店IDと店名を取得する場合は
WebRequestを使って以下のURLを呼び出します

Dim webreq As System.Net.WebRequest = System.Net.WebRequest.Create("https://api.shop-pro.jp/v1/shop.josn?fields=id,title")

webreq.Headers("Authorization") = "Bearer " & m_strAccessToken


Headers("Authorization")の部分は取得したアクセストークンをここで設定しています。
これを指定しないと権限が無いとエラーになってしまいます。

結果はJSONで返ってくるのでここからidとtitleの値を取得します。


16日にAPIが公開されてからここまで2日かかりました。

ふだんWebの仕事をしている訳ではないのでOAuthとかも初めてでしたのでなかなか大変でしたが
これでやっと思いついたアイデアを形にできる入口に立てました。


========= 2014/11/10 追記 =========

コメント欄で質問があったので簡単ですが説明を

kiriさんのサイト(OAuth(xAuth)のVB.net実装サンプル - きりの日記
に「オリジナルなこちら」というリンクがあると思いますが
その先のsourceforgeのサイトから以下の3つのファイルを取得します。
・HttpConnection.vb
・HttpConnectionOAuth.vb
・IHttpConnection.vb

それをプロジェクトに追加してください

f:id:holmes:20141110093728j:plain


そしたらFormでも何でも良いので

kiriさんのサイトの
使い方サンプル(xAuth)
初期化~認証まで

を参考にとりあえずはカラーミーのAPIの認証を通るところまで試してみて下さい。

それができたら次のステップで店舗情報や商品情報、受注情報の取得に進みます。