FitbitのOAuth 2.0 APIをPostmanで試してみる方法

[Fitbit](http://www.fitbit.com/)は、腕時計型の活動量計（心拍数計）です。以前、[公式チュートリアルを使って試す方法を紹介しましたが](http://qiita.com/makopo/items/32f41128c2e055cec68f)、それよりも簡単ですので、お試しあれ。

## 0. Postmanのインストール

[公式サイト](https://www.getpostman.com/)からダウンロードします。Chromeの場合、Chrome拡張機能として提供されています。

以降の記事では、Chrome拡張機能としてインストールしたPostmanの画面を前提に説明します。

## 1. OAuth認証情報を作成

https://dev.fitbit.com/ にアクセスします。

![F08E99F7-C0F5-4EC7-A148-ACE6D387EFAF.png](https://qiita-image-store.s3.amazonaws.com/0/10290/b3e5090d-7a55-c5ad-cbee-aa536aaef226.png)

画面右上の`REGISTER AN APP`ボタンをクリックすると、登録フォームが表示されます。

![登録フォーム](https://qiita-image-store.s3.amazonaws.com/0/10290/79f7da01-29e7-600e-5c8a-50416e65c678.png)

基本的に、何か埋まっていれば良いです。ただし、以下の点に気をつけてください。

* `Description`は10文字以上
* `OAuth 2.0 Application Type`には`Client`または`Personal`を選択
* `Callback URL`には**`https://www.getpostman.com/oauth2/callback`**を入力

> `Callback URL`は、Postmanで使用する上記のURLを正確に入力しましょう。最後にスラッシュをつけたりしないように。

最後にある`Register`ボタンをクリックすると、登録完了画面が表示されます。

![登録完了画面](https://qiita-image-store.s3.amazonaws.com/0/10290/f3cd9ab3-be12-aca3-9d6c-761a0de251d2.png)

PostmanでOAuth認証を行う場合は、ここにある全てが、次のステップで必要となります。

## 2. リクエストヘッダにOAuth認証情報を追加

Postmanを起動し、リクエスト生成画面を開きます。`Authorization`タブの`Type`を`No Auth`から`OAuth 2.0`に変更して、オレンジ色の`Get New Access Token`ボタンをクリックします。

![Postman1](https://qiita-image-store.s3.amazonaws.com/0/10290/d49402e7-fe81-a099-ef93-1c20db4a310b.png)

出てきたダイアログに、必要な項目を入力します。

![Postman2](https://qiita-image-store.s3.amazonaws.com/0/10290/e5867237-27be-ff7f-a3dc-aa3a018d6298.png)

* `Callback URL`を確認し、先ほど入れたものと違っていたら、Fitbitの登録情報を修正し、ここに表示されているものに合わせます。
* `Token Name`には、任意の文字を指定します。
* `Auth URL`、`Access Token URL`、`Client ID`、`Client Secret`には、先ほどの登録完了画面で表示されていた内容を入力します。
* `Scope(Optional)`には、**`activity heartrate location nutrition profile settings sleep social weight`**と入力します。
* `Grant Type`は`Authorization Code`のままで結構です。

オレンジ色の`Request Token`ボタンをクリックすると、ブラウザが開き、Fitbitのログイン画面が表示されます。Fitbitのログイン情報を入力します。

![ログイン](https://qiita-image-store.s3.amazonaws.com/0/10290/33660dc1-dbb7-ceb8-7362-e234a7293b73.png)

ログインが完了すると、アクセス許可を求められます。

![許可](https://qiita-image-store.s3.amazonaws.com/0/10290/3803f732-13c1-6553-f248-ec4b44726a74.png)

> この画面でなく、「接続しようとしているアプリは Fitbit に有効なデータを提供しませんでした。この問題を報告してください。」と表示される場合は、`Callback URL`が合っているか、今一度確かめましょう。

`許可`ボタンをクリックすると、ブラウザが閉じ、`Existing Tokens`の後に作成されたトークンが表示されます。

![トークン](https://qiita-image-store.s3.amazonaws.com/0/10290/058c309a-1bf7-0929-954c-86c75e6a1007.png)

トークン名をクリックして、右半分の`Add token to`を`URL`から`Header`に変更してから、オレンジ色の`Use Token`をクリックします。

隣の`Headers`タブを開くと、`Authorization`が追加されていて、値にトークンの内容が反映されています。

![ヘッダ](https://qiita-image-store.s3.amazonaws.com/0/10290/603c02fe-0058-051f-4126-52b3b00d817b.png)

> `Client`から`Personal`に変更する場合、また、その逆の場合は、`Get New Access Token`からやり直す必要があります。ただ、Postmanは前回のトークン作成で指定した内容を覚えていますので、ボタンのクリックだけで簡単に再作成できます。

## 3. クエリの実行

API Document
https://dev.fitbit.com/docs/

Postmanの`Enter request URL`部分にURLを設定し、青の`Send`ボタンをクリックすると、結果が返ってきます。ドキュメントの**Example Request** をそのままコピペして実行してみて、少しずつ変更していくのも良いでしょう。

#### 例１：直近1週間の心拍数を[ゾーン別](https://help.fitbit.com/articles/ja/Help_article/1565#zones)に取得

```
https://api.fitbit.com/1/user/-/activities/heart/date/today/7d.json
```

> 参考：Get Heart Rate Time Seriesの仕様
> https://dev.fitbit.com/docs/heart-rate/#get-heart-rate-time-series

![結果１](https://qiita-image-store.s3.amazonaws.com/0/10290/4599e211-0c7a-56c9-5b10-7565e9ec70e7.png)

行番号横の小さな三角をクリックすると、要素を畳むことができます。Fitbitのレスポンスは長いため、ぜひ活用しましょう。

#### 例２：2017年3月4日15時55分の心拍数を取得

`Personal`を指定してFitbitアプリを登録してある必要があります。

```
https://api.fitbit.com/1/user/-/activities/heart/date/2017-03-04/1d/1sec/time/15:55/15:56.json
```

> 参考：Get Heart Rate Intraday Time Seriesの仕様
> https://dev.fitbit.com/docs/heart-rate/#get-heart-rate-intraday-time-series

![結果２](https://qiita-image-store.s3.amazonaws.com/0/10290/ce6cc11e-6e83-4b09-18a9-0fceb9be0b0e.png)