ログインとアクセストークン

Kii Cloud ではログイン済みのユーザーをアクセストークンによって識別します。ログイン状態を管理するにはアクセストークンの扱いが重要となります。

アクセストークン

ユーザー登録やログインに成功すると、このユーザーは Kii Cloud に対してログインした状態になります。この際 Kii Cloud はユーザーに対してアクセストークンを発行します。アクセストークンは認証済みユーザーを識別するための文字列です。

クライアント SDK では、ログイン後に入手したアクセストークンをメモリ上に保持し、リクエストが行われるたびに Kii Cloud に送信します。これにより、Kii Cloud はログイン中のユーザーを識別することができます。アクセストークンはクライアント SDK の内部で保持され、後続の処理で自動的に参照されるため、モバイルアプリの実装から見ると、後続の処理でアクセストークンの存在を特に意識する必要はありません(ログイン中かどうかは意識する必要があります)。

REST では、HTTPS リクエストの Authorization ヘッダによって明示的にアクセストークンを指定します。ログインで取得したアクセストークンをモバイルアプリ側で自己管理します。

以下は Kii Cloud SDK でリクエストを行う際のアクセストークンの利用方法です。REST API を使用する場合は、自作するリクエストモジュールで Kii Cloud SDK と同等の作り込みが必要になるはずです。

アクセストークンがあれば、ユーザー名とパスワードを入力した場合と同様に、特定ユーザーの権限で Kii Cloud のデータにアクセスできます。アクセストークンをモバイルアプリで扱うときは、パスワードと同等のセキュリティを持つ情報として扱う必要があります。

アクセストークンに関連して、以下の場合は特殊な扱いとなります。

  • Kii Cloud SDK for Thing を使用した場合、Thing も専用の API によって Kii Cloud にログインし、アクセストークンを持った状態になります。詳細は Thing 管理 をご覧ください。

  • 仮ユーザー(Pseudo User)を使う場合、発行されたアクセストークンをモバイルアプリ側のコードで保持し続ける必要があります。詳細は 仮ユーザー(Pseudo User) をご覧ください。

ログイン状態の保持

アクセストークンはクライアント SDK のメモリ上に置かれるため、そのままではモバイルアプリの再起動によって失われます。

再起動後にログイン状態を復元するには、以下のいずれかの方法を使用します。

  • ユーザーにユーザー名やパスワードなどを再入力してもらい、もう一度ログインして新しいアクセストークンを取得します。
  • 前回のログイン時にアクセストークンを取得、保存しておき、再起動後にそのアクセストークンを使ってログインします。
  • Kii Cloud SDK が自動保存したアクセストークンなどの情報を使って再ログインします(Android と iOS のみ)。
  • REST API を使用する場合、アクセストークンをクライアント側で保存します。

アクセストークンによるログインを行うと、一旦ユーザー名やパスワードを使ってログインしたユーザーは、次回以降、その入力を省略できます。つまり、「ログイン状態を保持」のようなユーザーインターフェイスを実現できます。

ユーザーのパスワードが変更されると、アクセストークンは無効になります。この場合は、ユーザー名とパスワードを使ってログインを行い、新しいアクセストークンを取得してください。
また、ユーザーが無効化された場合も、アクセストークンは無効になります。

アクセストークンの互換性

各クライアント SDK で発行されたアクセストークンは SDK と REST の間で互換性があります。

たとえば、Kii Cloud SDK for Android を使用中に Android でサポートされていない機能を使用したい場合、SDK からアクセストークンを取得し、それを REST のアクセストークンとして使用できます。

Android での状態管理

Android では、アクティビティやプロセスの再起動に備えて、以下の 2 つのレベルで内部のセッション情報を保存できます。

  • アクティビティの再起動への対処

    アクティビティの再起動への対処として、Activity の実装における注意点 に示す方法で、onSaveInstanceState()onCreate() を実装します。

    アクティビティが破棄される直前に Activity.onSaveInstanceState() を呼び出して内部情報を Bundle に格納し、再起動後に Kii.onRestoreInstanceState() を呼び出して Bundle から内部情報を復元します。

    ただし、この方法では、プロセスが再起動した際に内部情報の復元ができません。

  • プロセスの再起動への対処

    プロセスの再起動に対応するため、アクセストークンの指定によるログイン または SDK による保存情報からのログイン に示す方法を使って、アクセストークンをストレージ(Shared Preference)に保存できます。

    この方法を使うと、モバイルアプリが終了した後もログイン状態を保持することができます。