2014-04-22 64 views
5

Google Cloud MBS的文檔指出,可以通過在字符串「[public]」或「[private]」前加上實體的KindName前綴來控制對存儲實體的訪問, 「 (或無)。使用Google Cloud/Android Mobile後端入門名稱訪問範圍

https://cloud.google.com/developers/articles/mobile-backend-starter-api-reference#acfce

然而試圖CloudEntities插入數據存儲區使用與[公共]或[私人]啓動導致異常/錯誤KindNames,具體而言,是KindName是無效的。

這是既爲後端在打開和在安全模式下運行(使用谷歌登錄憑證來導出_owner字段)

例如的情況下在這裏我使用KindName「[public] TestDB」失敗,而「TestDB」不會拋出任何異常。

04-22 19:57:54.132:E/AndroidRuntime(4690):進程:com.example.package,PID:4690

04-22 19:57:54.132:E/AndroidRuntime( 4690):java.lang.IllegalArgumentException:Illegal kind name:[public] TestDB

04-22 19:57:54.132:E/AndroidRuntime(4690):at com.google.cloud.backend.core.CloudEntity。 (CloudEntity.java:86)

04-22 19:57:54.132:E/AndroidRuntime(4690):at com.example.package.CloudUtil.convertUpdatesToCEList(CloudUtil.java:252)

04-22 19:57:54.132:E/AndroidRuntime(4690):在com.example.package.CloudUtil.checkSync(CloudUtil.java:199)

的代碼的相關部分editted /壓縮爲簡潔是:

CloudBackendMessaging cbm=_cloudfrag.getCloudBackend(); 

    List<CloudEntity> entries=new ArrayList<CloudEntity>(); 

    while (...) { 
     CloudEntity ce=new CloudEntity(_CLOUD_DB_KIND); 
     ce.put("fieldname", devID); 
     entries.add(ce); 
    } 


      _countActivity.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
         cbm.updateAll(entries, handler); 
       } 
      }); 

如果處理程序是回調_cloudfrag是從示例代碼CloudBackendFragment。

對於一次或多次實體列表,我同樣使用插入和更新的效果。

我只能認爲我誤解了文檔 - 但似乎相當明確,KindNames可以從[public] [private]等開始?

回答

1

從其他人遇到同樣問題的github上的bug報告來看,這是Google MBS庫中的一個錯誤。

不幸的是,直到今晚,對這個問題的迴應一直保持沉默,直到今晚,開發者發佈了一個更新自述文件的提交,表明該庫不再被支持,並且不是官方的谷歌產品(儘管它被作爲初學者工具包每個雲計算項目都從控制檯啓動!)。

https://github.com/GoogleCloudPlatform/solutions-mobile-backend-starter-android-client/pull/16

查看源我覺得這個訪問修飾符功能是從來沒有真正儘管文檔相反實施。