Alcance de acceso utilizando el nombre de tipo en Google Cloud / Android Mobile Backend Starter

La documentación de Google Cloud MBS indica que el acceso a entidades almacenadas puede controlarse mediante el prefijo de KindName de esa entidad con cadenas "[public]" o "[private]" (o nada).

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

Sin embargo, intentar la inserción de CloudEntities en el almacén de datos que utiliza KindNames que empiezan con [public] o [private] provoca una excepción / error, específicamente que el KindName no es válido.

Este es el caso tanto para el Backend que se ejecuta en modo abierto y en modo seguro (con las credenciales de inicio de sesión de Google para derivar el campo propietario)

Por ejemplo aquí yo uso KindName "[public] TestDB" que falla, mientras que "TestDB" no lanzaría ninguna excepción.

04-22 19: 57: 54.132: E / AndroidRuntime (4690): Proceso: 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): en com.google.cloud.backend.core.CloudEntity. (CloudEntity.java:86)

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

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

La sección pertinente de código editada / comprimida por brevedad es:

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); } }); 

Donde handler es la devolución de llamada y _cloudfrag es el CloudBackendFragment del código de ejemplo.

Obtengo el mismo efecto utilizando tanto inserciones como actualizaciones, para listas individuales o múltiples, es decir, de entidades a la vez.

Sólo puedo pensar que estoy malinterpretando la documentación – pero parece bastante explícito que KindNames puede comenzar con [public] [private] etc?

A juzgar por los informes de errores en github de otros que experimentan el mismo problema, se trata de un error en la biblioteca MBS de Google.

Desafortunadamente la respuesta a esto ha sido silencio durante meses hasta que esta noche los desarrolladores publicaron un solo commit actualizando el archivo readme para indicar que esta biblioteca ya no es compatible y no es un producto oficial de google (a pesar de ser empujado como un kit de inicio con cada proyecto cloud Empezó desde la consola!).

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

En cuanto a la fuente, creo que esta función de modificador de acceso nunca se implementó realmente a pesar de la documentación en sentido contrario.

  • Generar la biblioteca de cliente de punto final de nube de repente dejó de funcionar
  • No se puede acceder a la aplicación de App Engine que se ejecuta en Android Studio mediante Android Device Application in LAN
  • El arrancador de backend móvil no puede escribir el ID personalizado en el almacén de datos
  • ¿Cómo puedo conectar una aplicación de Google App-Engine con mi Android?
  • Desde la API de archivos Blobstore obsoleta hasta blobs de servicio
  • Java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
  • Llame a la base de datos de Firebase desde Google App Engine
  • La autenticación de Firebase de Android no funciona
  • Problemas al ejecutar aplicaciones desplegadas en Google AppEngine
  • ¿Cómo obtener acceso a las API de Google Cloud Save en android studio?
  • Java.lang.IllegalStateException: Esta función solo está disponible para instancias de backend
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.