このシリーズもこれで終わりにします。
ドキュメント読んだ通りに実装してみたつもりが接続できず、 カスタマーサポートにはサポート外と言われてみたり、と散々だったが、 どうにかつながったのでその報告。
2番めの記事の後、サポートに「サーバが生きているかどうかぐらい教えてよ」と食い下がったところ、 サーバは生きているのと、"「SockJSを使ってください」としかお伝えできません。"という超重要ヒントがもらえたので、 試行錯誤した結果、データ取得が出来るようになった。
ユーザでこれができているの、自分だけじゃないか?
以下、そのコードだが、いくつもツッコミどころがある。
const crypto = require("crypto"); const request = require('request'); const SockJS = require('sockjs-client'); const USERNAME = "your@email.com"; const PASSWORD = "your_password"; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; const sha256 = crypto.createHash('sha256'); sha256.update(PASSWORD); const hash = sha256.digest('hex') request.get(`https://public.bitpoint.co.jp/bpj-api/login?username=${USERNAME}&password=${hash}`, (error, response, body) => { const access_token = JSON.parse(body)['access_token']; const sock = new SockJS(`https://public.bitpoint.co.jp/bpj-api/twoWay?access_token=${access_token}`); sock.onopen = function() { console.log('open'); }; sock.onmessage = function(e) { console.log('message', e.data); }; sock.onclose = function() { console.log('close'); }; });
ツッコミどころその1。
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
証明書の検証エラーを黙らせる必要があった。
まじかよ…! まさかオレオレ証明書で運用しているのか?
ツッコミどころその2。
マニュアルの/login
がGETリクエスト。普通はここPOSTだろう。
しかも、password
パラメータはSHA256で 暗号化 するように書いてあるが、常識的に考えてハッシュ値だろう。 というかハッシュ値で通った。
ツッコミどころその3。
マニュアルの/login
の説明ページの右にフォームがあるが、ここに適当な値を入れてもエラーにならず、適当な値が返ってくる。
E-mailアドレスの存在チェックに使われるの防ぐためかもしれないが、そういうのはアクセス制限とかで防ぐべきではないだろうか? フォームの"パスワード"というラベルもミスリーディング。
ツッコミどころその4。
SockJSで接続できるのとWebSocketで接続できるのは別。マニュアルのエンドポイントがhttpsしか書いてないのでいろいろおかしいと思ったが、どうやったらSockJS使うと分かるというのか。
純粋なWebSocketで繋がるかどうかを検証するためws
で書きなおしてみたい気もするが、動いたところでなんの特もないのでこのあたりでやめておく。
結論、こんなわかりづらいAPIとそのドキュメントを提供している時点で安心して使うことはできない。お金を動かすに足らないレベルの信頼性である。特に証明書。
もし使うならそれなりの覚悟を持って使ったほうが良い。
- 作者: 竹迫良範,Jxck,はまちや2,相澤歩,柴田博志,池田尚史,梅澤雄一郎,九岡佑介,近藤宇智朗,佐藤鉄平,mala,川添貴生,じょさん,後藤秀宣,藤原俊一郎,奥野幹也,堤智代,森田創,中島聡,A-Listers,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2012/10/24
- メディア: 大型本
- 購入: 15人 クリック: 180回
- この商品を含むブログ (10件) を見る
- 作者: 羽田野太巳
- 出版社/メーカー: ソシム
- 発売日: 2014/01/20
- メディア: 単行本
- この商品を含むブログ (2件) を見る