メンバーを操作する(メンバープラグイン)
ここでは、サイトアカウントに存在するメンバーインスタンスを、SDKから操作する方法について解説します。
メンバーオブジェクトcom.echopf.members.ECHOMemberObject
ECHOMemberObjectは、個別メンバーを操作するためのオブジェクトです。
オブジェクトを生成する
新しいメンバーをオブジェクトとして生成するには、コンストラクタの第一引数にメンバーインスタンスのIDを指定します。
ECHOMemberObject member = new ECHOMemberObject("メンバーインスタンスID");
既存のメンバーをオブジェクトとして生成するには、コンストラクタの第二引数にメンバーID(注:ログインIDではありません)を指定します。
ECHOMemberObject member = new ECHOMemberObject("メンバーインスタンスID", "メンバーID");
オブジェクトフィールド
メンバーオブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 変更 |
---|---|---|---|
refid | java.lang.String | メンバーID | × |
login_id | java.lang.String | メンバーログインID | ◯ |
password | java.lang.String | メンバーログインパスワード | ◯ |
contents | org.json.JSONObject | メンバーコンテンツ | ◯ |
created | com.echopf.ECHODate | 登録日時 | × |
groups | org.json.JSONArray <com.echopf.members. ECHOMembersGroupObject> |
所属グループ | ◯ |
変更不可フィールドは、サーバーから提供される静的な情報です。
フィールドからデータを取得する
String(文字列型)のフィールドからデータを取得する
String型のフィールドからデータを取得する場合は、getStringメソッドまたはoptStringメソッドを使用します。
String login_id = member.getString("login_id");
int(整数値型)のフィールドからデータを取得する
int型のフィールドからデータを取得する場合は、getIntメソッドまたはoptIntメソッドを使用します。
ECHODate(日時型)のフィールドからデータを取得する
ECHODate型のフィールドからデータを取得する場合は、getDateメソッドまたはoptDateメソッドを使用します。
ECHODate created = member.getDate("created");
JSONObject型のフィールドからデータを取得する
JSONObject型のフィールドからデータを取得するには、getJSONObjectメソッドまたはoptJSONObjectメソッドを使用します。
JSONObject contents = member.getJSONObject("contents");
また、ネストされたフィールドから中身を直接取り出すには、ドット(.)区切りでフィールド名を指定します。
String name = member.getString("contents.name");
JSONArray型のフィールドからデータを取得する
JSONArray型のフィールドからデータを取得するには、getJSONArrayメソッドまたはoptJSONArrayメソッドを使用します。
JSONArray groups = member.getJSONArray("groups");
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、putメソッドまたはputOptメソッドを使用します。
member.put("login_id", "john1442");
member.put("contents", new JSONObject("{name:\"John\"}"));
ログイン・ログアウト
ACL(アクセスコントロール)が設定されているコンテンツへアクセスするには、予めアクセスが許可されているメンバーでログインしておく必要があります。
特定のメンバーでログインするには、ECHOMemberQuery.loginメソッド(同期通信によるログイン)もしくはEchoMemberQuery.loginInBackgroundメソッド(非同期通信によるログイン)を使用します。
try {
ECHOMemberObject member = ECHOMemberQuery.login("メンバーインスタンスID", "メンバーログインID", "メンバーログインパスワード");
} catch (ECHOException e) {Log.e("Error", e.toString()); // ログインエラー
}
ログインに成功すると、以後ログアウトもしくはタイムアウトするまで、ログイン状態が維持されます。
ログアウトするには、ECHOMemberQuery.logoutメソッドを使用します。
ECHOMemberQuery.logout();
サーバーへメンバーを保存する
サーバーへメンバーを保存するには、pushメソッド(同期通信による保存)もしくはpushInBackgroundメソッド(非同期通信による保存)を使用します。
ECHOMemberObject member = new ECHOMemberObject("メンバーインスタンスID");
member.put("login_id", "john1234"); // メンバーログインIDをセット
member.put("password", "password"); // メンバーログインパスワードをセット
....
// 非同期でメンバーを保存
member.pushInBackground(new PushCallback<ECHOMemberObject>() {@Override // 保存完了後に実行するコールバックメソッドを定義
public void done(ECHOMemberObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
サーバーからメンバーを取得する
サーバー上に存在する既存のメンバーを取得するには、fetchメソッド(同期通信による取得)もしくはfetchInBackgroundメソッド(非同期通信による保存)を使用します。
ECHOMemberObject member = new ECHOMemberObject("メンバーインスタンスID", "メンバーID");
// 非同期でメンバーデータを取得
member.fetchInBackground(new FetchCallback<ECHOMemberObject>() {@Override // 取得完了後に実行するコールバックメソッドを定義
public void done(ECHOMemberObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
サーバーからメンバーを削除する
サーバー上に存在する既存のメンバーを削除するには、deleteメソッド(同期通信による削除)もしくはdeleteInBackgroundメソッド(非同期通信による削除)を使用します。
ECHOMemberObject member = new ECHOMemberObject("メンバーインスタンスID", "メンバーID");
// 非同期でメンバーデータを削除member.deleteInBackground(new DeleteCallback<ECHOMemberObject>() {
@Override // 削除完了後に実行するコールバックメソッドを定義
public void done(ECHOMemberObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
メンバーを検索する
メンバーを検索するには、ECHOMemberQuery.findメソッド(同期通信による検索)もしくはECHOMemberQuery.findInBackgroundメソッド(非同期通信による検索)を使用します。
検索条件は、第二引数にリスト制御パラメータを指定します。
// 非同期でメンバーを検索
ECHOMemberQuery.findInBackground("メンバーインスタンスID", new JSONObject("{q:\"検索キーワード\"}"),
new FindCallback<ECHOMemberObject>() {@Override // 取得完了後に実行するコールバックメソッドを定義
public void done(List<ECHOMemberObject> objects, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", objects.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}}
);
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、getACLメソッドを使用します。
ECHOACLObject current_acl = member.getACL();
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACLメソッドを使用します。
ECHOACLObject new_acl = new ECHOACLObject(); // ACLオブジェクトを生成
new_acl.putEntryForAll(new ECHOACLEntry(false, false, false, false)); // 例:非ログイン訪問者の操作権限を全て奪う
member.setNewACL(new_acl); // 新しいACLをセット
member.push(); // セットしたACLを反映させるには、最後に必ず保存を実行してください