やーまんぶろぐ

気が向いた時にだけ書くブログ

Jawbone APIを触ってみた

jawbone-up-api-studyを見ながら、JawboneのAPIを触ってみました。

github.com

事前に登録作業を行いClient IdとApp Secretを取得、ローカルで動かした認証スクリプトを使ってアクセストークンを取得、そのアクセストークンを使ってAPIを実行という流れです。

登録作業

サインイン

JAWBONEのデベロッパーサイトにサインインします。

jawbone.com

Organization登録

Create an Accountをクリックし、Organization Name、Email Contact、Description を入力して送信。
f:id:yamano3201:20160408000828p:plain

App登録

続いてManage Account -> Create Appをクリックし、Name、Description、Long Description、URL、Authorization URL、OAuth Redirect URIsを入力して送信。
URLにはこのブログのURLを貼りました。

重要なのは、Authorization URLがOAuth Redirect URIsがhttp://localhost:5000 になっていることです。
OAuth redirect URLsはhttpsにしなければならないと書いているが、httpで登録して大丈夫でした。
f:id:yamano3201:20160408001030p:plain

f:id:yamano3201:20160408001511p:plain

Appの登録が終わるとClient IdとApp Secretを取得することができます。

アクセストークン取得

your-app-tokenとyour-app-client-idには事前に取得した値を使用します。

git clone https://github.com/shokai/jawbone-up-api-study.git
cd jawbone-up-api-study
bundle install --path=vendor/bundle
cd auth
export APP_SECRET=your-app-token
export CLIENT_ID=your-app-client-id
bundle exec rackup config.ru -p 5000
open http://localhost:5000

開かれたブラウザのloginをクリックすると、下のような認証画面が出るので「同意する」をクリックしてください。

f:id:yamano3201:20160408002819p:plain

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

APIを実行する

your-tokenには上で取得したアクセストークンの値を使用します。

cd ../
export JAWBONE_TOKEN=your-token
bundle exec ruby sleep.rb

↓出力結果を一部抜粋してみました。深い眠りの時間や起きた時間など細かく取れているのがわかりますね。

                "time_completed" => 1459986907,
                           "xid" => "XXXXXXXXXXXXXXXXXXX",
                         "title" => "8時間2分",
                  "time_created" => 1459955409,
                  "time_updated" => 1459987290,
                       "details" => {
                                "body" => "",
                    "smart_alarm_fire" => "",
                          "awakenings" => 3,
                               "light" => 19264,
                                "mind" => 0,
                         "asleep_time" => 1459956009,
                                "deep" => 9688,
                               "awake" => 2401,
                                 "rem" => 0,
                            "duration" => 31498,
                                  "tz" => "Asia/Tokyo",
                             "quality" => "",
                          "awake_time" => 1459986759
                },
                          "date" => 20160407,
                        "shared" => true,
                      "sub_type" => 0
            }

権限追加

main.rbのscopeを以下に書き換えて認証すると権限が増えます。

scope = "basic_read extended_read location_read friends_read sleep_read mood_read mood_write move_read move_write sleep_write meal_read meal_write weight_read weight_write generic_event_read generic_event_write heartrate_read"

ブラウザで見るとさきほどより増えてるのがわかります。
f:id:yamano3201:20160408014400p:plain

試しに新しいmoodを作成してみます。

スマホのアプリを確認すると、「あなたの活動」に追加されていることがわかります。

f:id:yamano3201:20160408015740p:plain

※Jawbone自体が振動して通知を教えてくれると期待していたのだが、振動しなかった。残念。

最後に

とりあえずアクセストークンは取れたので、これでいろいろできそうです。
lambdaで動かせばifttt連携とかラクできそうなので、やはりnode.jsでしょうかね。

github.com


気が向いたら、また書きます。