ユーザー属性
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 にアクセスします。