NCMBではJavaを使ったSDKをAndroid SDKとして提供しています。これはデバイストークンの取得機能など、Androidの関連付いて作られています。同じJavaではありますが、サーバサイドで利用することはできません。
ここでは現在開発中のJava用SDK(非公式)の使い方を紹介します。今回はACL用のクラス、NCMBAclの使い方を解説します。
データストアへの指定
なるべくAndroid用のSDKと合わせる形で実装しています。ncmb.NCMBAcl
で作成して、ACLの条件を指定してください。
NCMBObject hello = ncmb.NCMBObject("AclTest"); hello.put("message", "Hello World"); NCMBAcl acl = ncmb.NCMBAcl(); acl.setPublicReadAccess(true); acl.setPublicWriteAccess(false); acl.setRoleReadAccess("admin", true); hello.setAcl(acl); hello.save();
取り出す際には getAcl を使います。toJsonでJSONObjectが返ってきます。
NCMBQuery Query = ncmb.NCMBQuery("AclTest"); Query.limit(1); ArrayList<NCMBObject> ary = Query.find(); NCMBObject hello = ary.get(0); NCMBAcl acl = hello.getAcl(); System.out.println(acl.toJson().toString()); // {"role:admin":{"read":true},"*":{"read":true}}
利用できる条件について
条件は下記が利用できます。これもAndroid用のSDKと合わせています。
- setPublicReadAccess(Boolean bol);
- setPublicWriteAccess(Boolean bol);
- setRoleReadAccess(String role, Boolean bol);
- setRoleWriteAccess(String role, Boolean bol);
- setUserReadAccess(NCMBUser user, Boolean bol);
- setUserWriteAccess(NCMBUser user, Boolean bol);
注意
これに伴って、NCMBObjectはデフォルトで公開読み書きが可能な状態で作成されます(mBaaS自体の仕様です)。誰でも読み書きできる状態になりますので、適宜ACLを設定した上で保存を行ってください。
コードについて
コードはNCMBMania/java-sdkにて公開しています。ライセンスはMIT Licenseになります。
まとめ
サーバからファイルをアップロードしたり、mBaaS上にあるファイルをダウンロードするのに使えるかと思います。まだACLには対応していませんが、近く対応します。