メンバーを操作する(メンバープラグイン)

ここでは、サイトアカウントに存在するメンバーインスタンスを、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を反映させるには、最後に必ず保存を実行してください