コードを受け取るための簡易サーバーの準備
- Google Chromeの「Web Server for Chrome」のアドオンを追加する。
- 追加したアドオンを起動する。
- 「CHOOSE FOLDER」から任意のフォルダを選択する。
- これでWebサーバーが起動している状態になる。http://127.0.0.1:8887 にアクセスすると、「Index of current directory...」と表示されるページが開くはず。
Remote Hue API appidsの登録
- HueのDevelopperサイトにアクセス&ログインする。
- 右上のユーザー名の所のドロップダウンリストから「Remote Hue API appids」選択する。
- 「Add new Remote Hue API app」を選択する。
- 「App name」と「Application description」を適当に入力し、Callback URLに先ほどの簡易WebサーバーのURLを入力する(今回の場合はhttp://127.0.0.1:8887)。
- 「Submit」を押すと、以下の情報が返ってくるはず:
- AppId
- ClientId
- ClientSecret
コードの取得
- コードを受け取るための以下のURLの各パラメータを、2.で取得したものに置き換え、ブラウザで実行する。
https://api.meethue.com/oauth2/auth?clientid=&appid=&deviceid=&devicename=&state=&response_type=code
|パラメータ名|概要|
|:--|:--|:--|
|clientid|Remote Hue API appidsに登録した時に取得した英数字の文字列|
|state|レスポンスに含める任意の文字列。30文字以上のランダムな文字列を指定することを推奨|
|deviceid|任意の文字列|
|devicename|任意の文字列|
|appid|Remote Hue API appidsに登録した時指定されたAppのID|
|response_type|「Code」を指定する。|
-
ログインやHue Bridgeとのリンクなどを確認されたら、ブラウザの表示にしたがって対応する。
-
1.の簡易Webサーバーの画面が開く。このときURLを確認すると、パラメタータとして「Code」が記載されている(code=XXXXXXXXの部分)のでこれをメモしておく。
ClientIdとClientSecretのbase64エンコード
前々段で取得したClientIdとClientSecretをbase64でエンコードしておく。
# bash
CLIENTID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
CLIENTSECRET=XXXXXXXXXXXXXXXX
echo -n "${CLIENTID}:${CLIENTSECRET}" | base64
# base64でエンコードされた結果が出力される。
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==
Basic認証(トークンの取得)
- Google Chromeの「Talend API Tester - Free Edition」のアドオンを追加する。
- 追加したアドオンを起動する。
- 以下を指定して「Send」を実行する。
- METHODに「POST」
- SCHEMEに「https://api.meethue.com/oauth2/token?code=<前々段で取得したCode>&grant_type=authorization_code」
- HEADERのAuthorizationに「Basic <前段で取得したbase64エンコード文字列>」
- 成功すると200とaccess_tokenなどが返ってくる。
API実行(Google Chromeの「Talend API Tester」で)
-
以下を指定して「送信」を実行。
- METHODに「PUT」
- SCHEMEに「https://api.meethue.com/bridge/0/config」
- HEADERのAuthorizationに「Bearer <前段で取得したaccess_token>」
- HEADERのContent-Typeに「application/json」
- BODYに「{ "linkbutton": true }」
-
Hue Bridgeのリンクボタンを押す。
-
以下を指定して「送信」を実行。
- METHODに「POST」
- SCHEMEに「https://api.meethue.com/bridge/」
- HEADERのAuthorizationに「Bearer <前段で取得したaccess_token>」
- HEADERのContent-Typeに「application/json」
- BODYに「{ "devicetype" : "<前々々々段で取得したAppId>
-
usernameが返ってくるはず。
-
以下を指定して「送信」を実行。
- METHODに「GET」
- SCHEMEに「https://api.meethue.com/bridge/"username"/lights」
- HEADERのAuthorizationに「Bearer <前段で取得したaccess_token>」
- HEADERのContent-Typeに「application/json」
-
あとはLocal APIと同様に活用可能。
参考
TBD
トークンのリフレッシュ