ユーザー属性

Kii Cloud では、ユーザーに関する様々な情報を保存するため、ユーザー属性を利用できます。

ユーザー属性には既定フィールドとカスタムフィールドがあります。これらはユーザーごとに保存されます。

  • 既定フィールドは、Kii Cloud によってあらかじめ用途が定義されているフィールドです。ほとんどのフィールドは、Kii Cloud の認証機能などで特定の機能を実現するために使用します。
  • カスタムフィールドは、アプリケーションに応じて様々な目的で使用できるフィールドです。アプリケーションで自由に用途を定めることができます。

カスタムフィールドを使わずに、ユーザースコープの Bucket を使った場合も同様の機能を実現できます。パフォーマンスはユーザー属性より Bucket のほうが優れているため、ゲームでのスコア情報のように頻繁に書き換えが発生する用途にはユーザースコープの Bucket を使用することをおすすめします。

ユーザー属性へのアクセス

ユーザー属性の取得や更新は、実行できるユーザーが限定されます。ユーザーごとに実行できる操作は以下のとおりです。

  • ログインしていない場合(下記の表の匿名ユーザー)、ユーザーの取得そのものがエラーとなり、ユーザー属性へのアクセスができません。
  • 属性を操作したいユーザーと別のユーザーでログインしている場合(下記の表の他人)、読み取り操作のみが実行できます。ただし、メールアドレス、電話番号、カスタム属性などの "ユーザー情報の全データを開示"(Expose Full User Data to Others)オプションの対象データは、このオプションに基づいて読み込みの可否が決まります。
  • 属性を操作したい本人でログインしている場合(下記の表の本人)や、管理者トークンを使用している場合(下記の表の管理者)は、任意の操作が実行できます。
  匿名ユーザー 他人 本人 管理者
ユーザーの取得
(KiiUser の refresh)
エラー
読み取り ユーザー名
ディスプレイネーム
ユーザーの有効/無効
メールアドレス
電話番号など※1
◯※2
カスタムフィールド ◯※2
書き込み ユーザー名 エラー
ディスプレイネーム
ユーザーの有効/無効
エラー
メールアドレス
電話番号など※1
エラー
カスタムフィールド エラー

※1 "ユーザー情報の全データを開示"(Expose Full User Data to Others)オプションの対象となる属性です。

※2 "ユーザー情報の全データを開示"(Expose Full User Data to Others)オプションが有効になっていない場合、取得した結果にこれらのデータは存在しません。

他人の属性を書き換える必要がある場合、サーバー機能拡張 で書き換える処理を実装し、クライアントから手動実行で呼び出すこともできます。ただし、この方法では AppKey と AppID があれば不正なアクセスが行われるリスクが生じます(アクセスキーに対するセキュリティリスクについては セキュリティ をご覧ください)。この場合、ユーザー属性の代わりに、ユーザースコープに属性専用の Bucket を用意して、適切な ACL 設定を行う方が安全です。たとえば、アクセスできるメンバーをグループに限定し、そのグループからのアクセスを許可したユーザースコープの Bucket を用意するなどの方法を取ることができれば、より安全な設計になります。

ユーザー属性とは異なり、ユーザースコープの Bucket や Object へのアクセスは、ACL に基づいて実行の可否が決まります。なお、匿名ユーザーでも ACL が設定されていればユーザースコープへのアクセスが可能です。URL や ID、グループなどを使って KiiUser を作成し、refresh せずに Bucket にアクセスします。