Thing の登録と取得
Thing を Kii Cloud で使用するには、まず Thing の登録が必要です。登録を行うことで Kii Cloud はこの Thing を認識します。
2 回目の起動以降に同じ Thing を使用するには、登録済みの Thing の認証を行います。また、Thing のハードウェアが不揮発性メモリーを持っている場合、取得したアクセストークンと thingID を記憶しておくこともできます。
Thing の登録または認証を行うと、API 呼び出しに使用する kii_t
構造体は、Thing のアクセストークンを持った状態になります。これによって、Thing の権限で Kii Cloud にアクセスできます。
Thing の登録
Thing を Kii Cloud に登録するには kii_thing_register
関数を呼び出します。
/* Set thing information. */
#define VENDOR_THING_ID "rBnvSPOXBDF9r29GJeGS"
#define THING_TYPE "sensor"
#define PASSWORD "123ABC"
int ret;
/* Register the thing. */
ret = kii_thing_register(&kii, VENDOR_THING_ID, THING_TYPE, PASSWORD);
if (ret != 0) {
/* Handle the error. */
return;
}
printf("thingID:%s\n", kii.kii_core.author.author_id);
printf("access token:%s\n", kii.kii_core.author.access_token);
ここでは、vendorThingID を "rBnvSPOXBDF9r29GJeGS"、Thing タイプ を "sensor"、パスワード を "123ABC" として Thing を登録しています。また、kii
は SDK の初期化 で初期化した kii_t
構造体を指定します。
登録が成功すると、指定した kii_t
構造体には thingID とアクセストークンが保持された状態で制御が戻ります。これは、ログイン状態に相当し、後続の API の呼び出しを Thing の権限で実行できます。
登録した Thing の thingID と アクセストークンは、kii_t
の kii_core.author
メンバーから取得できます。
Thing の認証
シャットダウンなどによって kii_t
の情報が失われた後、登録済みの Thing をもう一度利用する場合は、kii_thing_authenticate
関数によって認証します。
/* Set thing information. */
#define VENDOR_THING_ID "rBnvSPOXBDF9r29GJeGS"
#define PASSWORD "123ABC"
int ret;
/* Authenticate the thing. */
ret = kii_thing_authenticate(&kii, VENDOR_THING_ID, PASSWORD);
if (ret != 0) {
/* Handle the error. */
return;
}
printf("thingID:%s\n", kii.kii_core.author.author_id);
printf("access token:%s\n", kii.kii_core.author.access_token);
ここでは、Thing の登録時に指定したとおり、vendorThingID を "rBnvSPOXBDF9r29GJeGS"、パスワード を "123ABC" として認証を行っています。
Thing の登録時と同様に、認証が成功すると、kii_t
構造体に thingID とアクセストークンが保持されている状態になります。kii_core.author
構造体からそれらを取得することもできます。
アクセストークンの設定
2 回目以降の起動時に kii_thing_authenticate
関数によって Thing を認証する代わりに、アクセストークンと thingID を不揮発性メモリーに保存しておき、次回、それを復元することでも認証と同様の結果が得られます。
認証成功時、ユーザープログラム側で用意した方法を使って、kii.kii_core.author.author_id
と kii.kii_core.author.access_token
を文字列として記録しておきます。なお、author_id
と access_token
は、それぞれ 128 バイトの char 配列として宣言されています。
/* Securely store the thing ID and the access token in the persistent storage with your own function. */
storeToken(kii.kii_core.author.author_id, kii.kii_core.author.access_token);
次回起動時は、初期化処理 が完了している kii_t
構造体に対して、保存した情報を下記のように復元します。
int ret;
/* Get the thing ID and the access token from the persistent storage with your own function. */
ret = getStoredToken(&kii.kii_core.author.author_id, &kii.kii_core.author.access_token);
if (ret != 0) {
/* Handle the error. */
return;
}
/* Do something. */
導入手順 でビルドしたサンプルプログラムでは、この方法で認証情報を復元しています。不揮発性メモリーに保存する代わりに、#define でハードコードされた author_id
と access_token
をコード上で直接復元しています。#define の値は、Thing の登録または認証を行ったときの値に従って書き換えてください。