IIJ mio クーポンスイッチ API を叩いてテザリングを楽にする
仕事で少し API を触る機会があり学習中の身なのだが、そういえば普段使っている IIJ mio の格安 SIM には API があったなと思いいたり、触ってみたので記録がてら。
はじめに
格安 SIM を使い始めて久しいが、LTE 通信(高速なインターネット通信)を On / Off できるという概念は面白いと思った。
自分の場合、出先でのスマホ作業は仕事用端末の iPhone を使っているとだいたい通信制限ギリギリになってしまうため、どうしても出先でネット環境が必要になった場合、私用携帯の Android SIM フリー端末 (Zenpad3 )にてテザリングをして使い分けている。
クーポンアプリはオフィシャルなものとサードパーティのものを一つずつ使っていた。
しかし、API ならばブラウザとかターミナルとか POSTMAN (*1) でも叩けるのでは?いちいちタブレットでアプリ開く必要ないのでは? と思ったのが本記事のきっかけとなった。
(*1)POSTMAN
参照
IIJmio クーポンスイッチ API リファレンス www.iijmio.jp
やりたいこと
Android にてテザリングしはじめたら ー ①
母艦(MBP)側でその SSID を拾いに行く ー ②
同時に IIJ mio クーポンを ON
にする ー ③
③の準備
順番前後しますが
POSTMAN のインストール
無くてもできなくはないが、今後も色々と捗るのでまだの方はインストールをどうぞ。インストール方法は割愛
IIJ mio の API 「みおポン API」を叩くために必要な情報の確認方法
API を操作したいときの基本としては、必ず用意されているであろうリファレンスガイドなどを読むことだ。
デベロッパID 開発者を識別する文字列です。 IIJmioクーポンスイッチAPIを利用する際に、X-IIJmio-Developer ヘッダに指定する必要があります。
アクセストークン アプリケーションの利用者を識別する文字列で、mioIDとパスワードによって利用者の認証/認可を行うことで発行されます。
IIJmioクーポンスイッチAPIを利用する際に、X-IIJmio-Authorization ヘッダに指定する必要があります。
この絵によると、(a) の作業と (b) の作業をすると得られるリダイレクト URI に含まれるアクセストークンを得る必要があるとわかる。
(a) の作業:ブラウザからのログイン
mioID / パスワードを用意し、ブラウザで https://api.iijmio.jpにアクセスする。
https://api.iijmio.jp/mobile/d/v1/authorization/以下略 という URL に遷移する。
ここで mioID / パスワードを入力。MA
から始まる。
ログイン
をクリックして進む。
これで認可までが完了したことになる。
(b) の作業:アクセストークンの取得
次に、許可する
をクリックすると、デベロッパ ID が取得でき、アプリ1~3 とその URI を編集できる画面となる。
これでX-IIJmio-Developer
が取得できた。
ここでブラウザの URL バーにある文字列のなかに access_token
の他に、token_type
, expires_in
, state
が新たに含まれている。
https://api.iijmio.jp/mobile/d/v1/console/#access_token=QHgWZ7◻◻◻◻◻◻◻&state=e9b5fab3e48e3d62◻◻◻◻◻◻◻&token_type=Bearer&expires_in=7776000
ちなみにアプリ名や Redirect URI は、サンプルのものと同じにしてみた。
CLI からだけで実施する場合は、リクエストのサンプルの通り。State だけは勝手につけて良い値。
クーポンの操作(状態確認)
POSTMAN を使っていく。 まずはクーポンの状態確認から。
GET
メソッドにて、
https://api.iijmio.jp/mobile/d/v2/coupon/
を宛先とし、
Headers にて、先ほど得た値を指定する
X-IIJmio-Developer
,
X-IIJmio-Authorization
ここ SEND
ボタンをクリックして成功すると Status 200 OK
となり情報が返ってくる。
hddServiceCode
は回線の固有識別子なので覚えておく必要がある。
その下には、残りのクーポン量などが表示されている。
クーポンの操作(ON / OFF)
今度は PUT
メソッドにて、同じ URL を叩くが、新たに Content-Type
: application/json
というヘッダを追加する。
さらに、Body のタブから、「クーポンを ON にするぞ」という命令文を記述する。
命令するので PUT
なんだと覚えている。もっというと Headers 情報は、正しい API リクエストであることの証明で、Body 情報は命令の中身というざっくり理解。
{"couponInfo" : [{"hdoInfo" : [{ "hdoServiceCode": "hdoXXXXXXXXX", "couponUse" : true }]}]}
これで右上の SEND
ボタンを押して成功すると、POSTMAN の下半分に、 Status 200 OK
となり
{ "returnCode": "OK" }
という文字列が返ってくる。正しくクーポンを ON にできましたという返答。
クーポンをオフにするときは、true
を false
にする。
{"couponInfo" : [{"hdoInfo" : [{ "hdoServiceCode": "hdoXXXXXXXXX", "couponUse" : false }]}]}
コード化(python)
ここで操作してもスイッチとして使えるが、POSTMAN はこの操作を様々な言語のコードにしてくれる。
SEND
ボタンの右下あたりの code
をおすと、言語選択画面に移る。
ここでは python を選択する。
python の request という HTTP ライブラリを利用したサンプルコードに変換してくれる無料とは思えない有り難い機能だ。
このコードをコピペして iij_on.py
とでもして実行権限をつける
②の準備:CLI から SSID をつかみにいく
最初は Automator などで考えていたが、シェルだけでこんな便利なことができたんですね・・・。
まるっと利用させていただきました。ありがとうございます。 qiita.com
唯一の工夫として、最後の echo ~~ の前に、③で作成した python のコードを実行する一行を加える。
(snip) echo 'Connected successfully.' python iij_on.py exit 0
tethering.sh
という名前にしておいた。
これで、ある SSID への接続と、クーポンの有効化を、ワンライナーでできそうだ。
確認
①(ここだけは手動で)Android からテザリングを有効化
②&③ bash tethering.sh "ssid_name" "password"
Connected successfully. {"returnCode": "OK"}
おしまい
【Amazon.co.jp 限定】IIJmio みおふぉん SIMカード 音声通話パック 月額料金300円×12ヵ月割引キャンペーン中! ! IM-B100
- 出版社/メーカー: IIJ
- 発売日: 2015/09/18
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る