¿Sabías que todas las aplicaciones de la Expo incluyen el SDK de Facebook?

Cómo la Expo está engañando a todos

React Native ha estado ahí por un tiempo y ha acumulado muchos seguidores. Con sólo mirar el repositorio de GitHub, los números son asombrosos: Con el propio framework, también se creó una nueva herramienta llamada Expo. Ahora bien, es posible que se sienta confundido en este momento, ya que las diferencias entre React Native y Expo no son evidentes desde el primer momento. Básicamente, Expo es una capa de ofuscación sobre React Native, que permite al usuario crear aplicaciones sin tener que escribir código nativo. Es esencialmente un SDK (Software Development Kit) que simplifica el proceso de desarrollo de una aplicación nativa a los desarrolladores exponiendo los componentes nativos y varias librerías. También tiene un cli incorporado (interfaz de línea de comandos) que permite varias acciones (creación, registros, publicación). Por lo tanto, sabemos que React Native fue desarrollado por Facebook, pero Expo supuestamente no está asociado a él de ninguna manera, ¿verdad? aquí es donde las cosas se ponen interesantes, porque hay una serie de “gemas” ocultas que no se revelan a los desarrolladores que utilizan Expo. Si ha desarrollado y publicado una aplicación utilizando Expo, es posible que esto no le sorprenda tanto. Pero, si usted está considerando hacerlo, necesita estar al tanto de las “características” que presentaré en este artículo.

Divulgación completa

Si entra en la página web de la Expo y hace clic en los enlaces que le llevarán a su documentación, llegará a un enlace titulado “¿Por qué no la Expo? En la documentación, se dan varias razones por las que no debería utilizar Expo:

  • El soporte de todos los tipos de ejecución de código de fondo es limitado
  • Mayor tamaño de aplicación
  • Uso de un servicio de notificación push diferente al de Expos
  • Versiones mínimas de los sistemas operativos compatibles

Parece bastante legítimo, ¿no? Están dispuestos a mostrarnos sus cartas y compartir algunas de las desventajas de su herramienta.La cosa es que no revelaron todas sus tarjetas y estoy aquí para llamar a su farol. Alex Haney (Unsplash , Facebook SDK , Todas las aplicaciones que desarrollemos con Expo incluirán el SDK de Facebook dentro de nuestra aplicación. Si eso no te alarma, debería. No hay razón para empujar explícitamente el SDK de Facebook a una aplicación (¿alguien dice Flashlight?) y la razón detrás de esto no me parece inocente. Como todos sabemos, Facebook es una empresa basada en datos, y ¿qué mejor manera de recopilar datos? Hay una razón por la que el tamaño de la aplicación es grande cuando se utiliza la Expo, e incluir el SDK de Facebook es parte de ella.¿Cómo me tropecé con esto? Al publicar una aplicación Expo en Google Play Store, el sistema me informó de que, aunque he marcado que mi aplicación no contiene anuncios, sí contiene el SDK de Facebook. Si esto todavía no te parece alarmante, considera la idea de desarrollar una aplicación y no saber que alguien ha insertado algo en el código base sin tu conocimiento.

Anuncios? ¿Quién dijo algo sobre los anuncios?

Además del punto anterior, una aplicación Expo recopila una gran cantidad de datos de usuario. Esto podría estar bien si se declarara públicamente, pero la realidad actual es que esto sucede sin que el desarrollador lo sepa. En particular, todas las aplicaciones de la Expo recogen el ID de publicidad de los usuarios. ¿Por qué es esto un problema? Si ignoramos el hecho de ocultar esto a los desarrolladores, también hace que los editores de aplicaciones Expo violen el Acuerdo de distribución para desarrolladores de Google. En particular, la violación del uso de la política de identificación de publicidad de Android y la sección 4.8.Para citar la sección 4.8:

Usted acepta que si pone sus productos a disposición a través de Google Play, protegerá la privacidad y los derechos legales de los usuarios. Si los usuarios le proporcionan a Usted, o si Su Producto accede o utiliza, nombres de usuario, contraseñas u otra información de inicio de sesión o información personal, Usted acepta hacer saber a los usuarios que la información estará disponible para Su Producto, y Usted acepta proporcionar un aviso de privacidad y protección legalmente adecuados para esos usuarios. Además, Su Producto sólo podrá utilizar esa información para los fines limitados para los que el usuario le ha dado permiso para hacerlo. Si Su Producto almacena información personal o sensible proporcionada por los usuarios, Usted acepta hacerlo de manera segura y sólo durante el tiempo que sea necesario. Sin embargo, si el usuario ha optado por un acuerdo separado con Usted que le permite a Usted o a Su Producto almacenar o utilizar información personal o sensible directamente relacionada con Su Producto (sin incluir otros productos o aplicaciones), entonces los términos de ese acuerdo separado regirán Su uso de dicha información. Si el usuario proporciona la información de su cuenta de Google a su producto, éste sólo podrá utilizarla para acceder a la cuenta de Google del usuario cuando y para los fines limitados para los que el usuario le haya autorizado a hacerlo.

Si está recopilando datos sobre sus usuarios, debe proporcionar una Política de privacidad con su aplicación. Pero, si no lo sabes, tu aplicación será eliminada de la tienda de Google Play y recibirás un correo electrónico espantoso de Google. Una vez más, la mayoría de los desarrolladores ni siquiera saben cuál es el ID de publicidad de Android, por lo que esta es una táctica bastante mala utilizada por la Expo.

Y una cosa más… Cómo obtener un APK/IPA

Para obtener un APK/IPA de su aplicación, debe usar el botón de publicación en Expo Dev Tools o usar el cliente y ejecutar el comando expo publish . Lo que no le dicen acerca de este proceso es que, sin importar el tamaño de su solicitud original, este paso puede tomar mucho tiempo. ¿Cuánto tiempo? Más de una hora. Compara esto con la creación de un APK/IPA en Android Studio/Xcode y no entenderás por qué está llevando tanto tiempo.Ahora, la premisa de la Expo es que es gratuita. Incluso se indica en su FAQ. Pero, usted notará que mientras la construcción se está ejecutando y toma demasiado tiempo, usted recibirá un aviso para actualizar (es decir, pagar) por un servicio premium en Expo que hará que sus construcciones se ejecuten más rápido. Este enlace lo llevará a una página titulada Servicios para Desarrolladores de Expo, que le costará $29 por mes y permitirá que sus tiempos de construcción sean más rápidos (entre otros servicios). No tengo nada en contra de que Expo gane dinero con los servicios y no voy en contra de la noción de un servicio premium, pero parece de mal gusto notificar a los desarrolladores de esta opción cuando sus construcciones están tardando demasiado tiempo. Han construido una gran herramienta para desarrolladores que es gratuita y permite a más gente entrar en el mundo del desarrollo de aplicaciones móviles. Al igual que la mayoría de las cosas que son libres en la vida, no se puede pensar que los motivos detrás de ellas son inocentes. Nada en la vida viene sin sus desventajas y es importante que usted, como desarrollador, también las conozca. Así que la próxima vez que busque un servicio gratuito, piénselo dos veces antes de añadirlo a su proyecto.

Etiquetas

ExpoFacebookCodificaciónTecnologíaDesarrolloExpo FacebookExpo SdkkHackernoon Top Story

Comentarios

David4 de septiembre de 2019

¿Qué datos envía el SDK de Facebook dentro de las aplicaciones de la Expo a Facebook?

tomerpacificEl 6 de septiembre de 2019

@David,

esa es una pregunta que el equipo de la Expo o alguien de Facebook debe responder mejor.

Conociendo sus capacidades, el cielo es el límite.

austin6 de septiembre de 2019 David:

¿Qué datos envía el SDK de Facebook dentro de las aplicaciones de la Expo a Facebook?

Excelente pregunta, y podríamos ser capaces de resolverla con un poco de investigación… No soy un experto, pero aquí están mis pensamientos:

Ahora, imaginemos que tienes una aplicación que utiliza todas las funciones de Expo disponibles. Una “demo del fregadero de la cocina”, por así decirlo. Cuando esté usando esta aplicación de demostración, puede conectar su teléfono a la computadora y no sólo puede depurar la aplicación y ver qué tipo de llamadas se están realizando, sino que también puede “volcar” todo el tráfico que va hacia y desde su teléfono a un archivo de registro. Esto puede ser ruidoso, pero con una aplicación como Wireshark, puede filtrar los datos y ver exactamente qué bits y bytes se están enviando desde la propia Expo.

Por supuesto, esto no tiene en cuenta la encriptación….si han encriptado el tráfico (¡lo cual espero que hagan!) entonces tienes un nuevo reto: desencriptar el tráfico sin la clave. Como lo demuestran exploits como los que están en contra de la encriptación WEP wifi, esto es factible, pero no está realmente al alcance de un desarrollador medio que sólo intenta husmear por ahí. (También esto puede ser ilegal, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, ni yo ni Hacker Noon perdonamos la actividad ilegal).

Así que en teoría es posible, pero si están encriptando el tráfico… bueno, todo depende. Si están usando AES en los modos ECB o CBC, un estudiante de primer año que esté tomando un curso de criptografía podría romperlo. Si están usando algo más fuerte… otra vez, todo depende. Un criptosistema es tan fuerte como su eslabón más débil.

Ahora que lo pienso, si pudieras depurar la aplicación, y capturar la aplicación enviando datos a Facebook antes de que esté encriptada….has ganado. Pero esto supone mucho, especialmente si se asume que la construcción de depuración de la biblioteca de la Expo se utilizará en el desarrollo. Estoy seguro de que se han cubierto el culo hasta cierto punto – la pregunta es, ¿cuánto?

Podría seguir adelante, pero, así de fácil, me has hecho pedazos. Maldita sea. ¡De vuelta a internet!

ideSeptiembre 19, 2019

Hola, soy uno de los cofundadores de Expo y he trabajado en ella durante varios años y tengo el contexto para explicar por qué Expo funciona de la manera en que lo hace. Encontré que varias partes de este artículo son incorrectas o sugieren una mala intención, lo que nunca ha sido el caso en la Expo. La confianza de los desarrolladores es uno de nuestros mayores valores, así que me gustaría explicarles más sobre Expo de una manera que espero que sea clara y comprensible.

¿Qué es la Expo? Expo es una plataforma de código abierto para crear aplicaciones nativas universales con React. Expo se ejecuta actualmente en Android, iOS y web, y mediante el uso de JavaScript y React se pueden crear aplicaciones que se ejecutan en los tres entornos, a la vez que se obtiene acceso a muchas de las capacidades nativas de cada uno de ellos. En Android e iOS usamos React Native, y en la web usamos React DOM, que utiliza la API “nativa” de la web. Expo no es una “capa de ofuscación”, aunque utiliza Terser para web y uglify-es para Android e iOS, que minimizan su JavaScript.

Si estás más interesado en el aspecto del código abierto, visita nuestro repositorio principal de GitHub en https://github.com/expo/expo! El repositorio GitHub contiene el código fuente para los clientes Android e iOS; docenas de bibliotecas que proporcionan soporte para la cámara, reproducción de A/V, fuentes personalizadas y más; y la infraestructura de pruebas para las aplicaciones y bibliotecas.

Una parte de Expo son los clientes Android e iOS que le ayudan con el desarrollo. Estos clientes son opcionales pero ayudan a gestionar parte del flujo de trabajo de desarrollo (lo llamamos el flujo de trabajo “gestionado”). Contienen muchas bibliotecas nativas diferentes que puedes utilizar en tus proyectos, y cuando estés listo para enviar a App Store o Google Play, puedes crear binarios de aplicaciones independientes con las mismas bibliotecas nativas.

¿Por qué el cliente Expo contiene el SDK de Facebook? La mayoría de las bibliotecas que mantenemos están relacionadas con la funcionalidad del dispositivo, como la cámara, los sensores del giroscopio, el brillo de la pantalla, y más. Un pequeño número de bibliotecas ofrecen soporte para servicios como Facebook y Google Login; estas bibliotecas incluyen los SDK respectivos de los servicios, incluido el SDK de Facebook.

Expo soporta Facebook Login (puedes dejar que tus usuarios finales se conecten con Facebook) y Facebook Ads (puedes mostrar anuncios móviles de Facebook en tu aplicación) porque varios desarrolladores necesitaban las características y son algunos de los servicios de inicio de sesión y publicidad más populares. Esta es la única razón por la que las aplicaciones Expo gestionadas contienen el SDK de Facebook. Facebook no nos pidió que incluyéramos el SDK de Facebook en la Expo.

Expo también es compatible con Google Sign-In y Google AdMob para el inicio de sesión y los anuncios, respectivamente, así como con Google Maps. También tenemos una biblioteca de autenticación genérica que funciona con una variedad de servicios OIDC y OAuth 2. En general, preferimos crear bibliotecas generalizables y agnósticas para las empresas cuando podemos.

Para reafirmar, todo este código fuente está en un repositorio público de GitHub, que es un gran lugar para ver nuestras “tarjetas”, para usar la metáfora del artículo. Usted no sólo puede ver nuestra mano – usted puede ver casi toda la cubierta en nuestros repositorios GitHub, donde hacemos nuestro desarrollo. Y añadiremos una entrada sobre las bibliotecas de Google y Facebook a nuestra página “Why not Expo” para que sea más fácil de ver.

¿Cómo puedo excluir el SDK de Facebook de una aplicación de Expo? Varias aplicaciones de Expo no incluyen el SDK de Facebook. Puede hacerlo con lo que llamamos el flujo de trabajo “desnudo”, que le proporciona un alto grado de control sobre los proyectos Xcode y Android Studio desnudo.

En contraste con el flujo de trabajo gestionado, con el flujo de trabajo desnudo puede incluir y excluir bibliotecas en función de sus necesidades. Es decir, si su proyecto de la Expo utiliza el flujo de trabajo básico y no incluye las bibliotecas Facebook Login y Facebook Ads, su aplicación no incluirá el SDK de Facebook a menos que lo haya añadido manualmente al proyecto de alguna otra forma.

Si está utilizando el flujo de trabajo gestionado, las aplicaciones independientes contendrán los SDK de Google y Facebook. Esto funciona para muchos desarrolladores y dependiendo de sus necesidades puede utilizar el flujo de trabajo gestionado o elegir el flujo de trabajo desnudo para personalizar y compilar la aplicación usted mismo.

¿Qué datos de usuario recopila la Expo? Recopilamos muy pocos datos de usuarios y, hasta donde sabemos, nada que identifique a las personas que utilizan las aplicaciones de Expo. Si utiliza el flujo de trabajo gestionado de Expo, las aplicaciones solicitan actualizaciones a través de HTTPS, y estas solicitudes no contienen identificadores de dispositivo únicos. Hay muchas, muchas aplicaciones hechas con Expo publicadas en la App Store y Google Play sin problemas y con respeto y consideración por la privacidad del usuario. También tenemos una política de privacidad en nuestro sitio web.

¿Recoge la Expo documentos publicitarios? La gran mayoría de las aplicaciones de Expo no recopilan IDs publicitarios, y Expo (la empresa) no recopila ni utiliza estos IDs nosotros mismos. Tanto Android como iOS tienen identificadores de publicidad, como se menciona en el artículo. Son utilizados por las bibliotecas para mostrar anuncios (Google AdMob y Facebook Ads) y la biblioteca de sucursales. Si no utiliza estas librerías en su proyecto, el ID de publicidad nunca sale del dispositivo del usuario y ningún servicio lo recoge.

Una cosa que quiero dejar clara es que Expo no gana dinero con los anuncios. Las librerías de anuncios son únicamente para desarrolladores que eligen mostrar anuncios en sus propias aplicaciones. No mostramos anuncios a desarrolladores ni a usuarios finales.

¿Cómo gana dinero la Expo? Generalmente, nuestro plan para el negocio es crear servicios que ayuden a los desarrolladores a crear y operar sus aplicaciones. Hemos empezado con Expo Developer Services, un plan mensual para algunos servicios de creación de aplicaciones.

Una de las características de este plan es que usted obtiene acceso prioritario cuando construye sus binarios de aplicaciones con el flujo de trabajo administrado. A medida que Expo ha ido creciendo, más desarrolladores están presentando más construcciones, lo que requiere más servidores que son bastante caros de operar. Introdujimos las edificaciones de prioridad como una forma de que los usuarios de negocio ayuden a cubrir los costes de servidor para la creación de aplicaciones, lo que a su vez nos permite comprar más capacidad de servidor. Fundamentalmente, el clúster de servidores es un recurso finito y compartido y creemos que es justo que aquellos que están pagando por él tengan prioridad al usarlo. Si encuentras que tu compilación está llevando demasiado tiempo, puedes usar el flujo de trabajo desnudo y crear tus binarios de aplicaciones en tu propio ordenador (necesitarás un Mac para las compilación de iOS).

Creemos firmemente en mantener la plataforma Expo libre – mantenerla libre para crear una aplicación Expo en su propio ordenador, de forma similar a como es libre de crear una aplicación web en su propio ordenador. Es importante para nosotros que los estudiantes puedan utilizar la Expo para proyectos de clase y que los desarrolladores de las empresas puedan probar la Expo sin que se apruebe un presupuesto por adelantado. Creemos que esta es la mejor manera en que Expo puede tener éxito.

Al igual que la plataforma web, queremos que las aplicaciones Expo sean gratuitas. Y al igual que la plataforma web, queremos que los desarrolladores puedan utilizar cualquier hardware o proveedor de servicios que quieran utilizar. Y al igual que la web, algunos de esos proveedores de servicios cuestan dinero si usted decide usarlos.

Estos servicios son opcionales y forman parte del flujo de trabajo gestionado – Expo gestiona varias partes del desarrollo de aplicaciones para usted – pero no necesita utilizarlas con el flujo de trabajo desnudo. Dicho esto, operar servicios como los creadores de aplicaciones y las actualizaciones vía satélite cuesta una cantidad significativa de dinero que se suma a todas las aplicaciones que utilizan nuestros servicios. Para ofrecer estos servicios de forma sostenible y ofrecer el alto rendimiento y la alta fiabilidad que necesitan los proyectos, tenemos que cobrar por ellos. No hay motivos engañosos, es simplemente la realidad. Muchos de los desarrolladores con los que hablamos realmente entienden esto intuitivamente y nos dicen que se sentirían aún mejor si construyeran con Expo si pudieran pagar por los servicios que están utilizando. Direccionalmente hablando, los servicios de Expo se parecerán más a AWS, por ejemplo – hay un nivel gratuito para aplicaciones más pequeñas y para aplicaciones más grandes sólo se paga por lo que se usa.

En resumen, la plataforma Expo es gratuita y de código abierto. Usted no necesita pagar Expo para hacer una aplicación, ni necesita usar ninguno de nuestros servicios. Hemos invertido, y seguiremos invirtiendo, gran parte de nuestro tiempo en el flujo de trabajo desnudo para que pueda crear sus aplicaciones Expo en su propio ordenador, alojar sus actualizaciones por aire en su propio servidor web, utilizar su propio servicio de notificación push, etc.

Además de la plataforma Expo, operamos y estamos trabajando en servicios de Expo opcionales de próxima generación para gestionar partes de su flujo de trabajo de desarrollo para tareas como la creación de binarios de aplicaciones, la implementación de actualizaciones inalámbricas de alta eficiencia y el envío de notificaciones push de alto volumen. La próxima generación de estos servicios tomará un tiempo significativo para desarrollarse y aún no tenemos un modelo de precios, pero creemos que el modelo de precios de AWS funciona bien para mucha gente al alinear nuestros costos con los de los desarrolladores y cobrar sólo por lo que la gente usa.

Por último, quiero ser inequívocamente claro que la confianza de los desarrolladores es increíblemente importante para nosotros y que buscamos hacer nuestro trabajo con integridad y calidad. Hicimos el código abierto de Expo, estamos trabajando en un modelo de negocio sostenible, y escribimos posts como este para construir esa confianza con el tiempo. Puede que nuestras decisiones no sean del agrado de todos, pero así es como hacemos nuestro trabajo en la Expo.

jflynt51225 de septiembre de 2019

¿Es posible que pueda ampliar las aplicaciones gestionadas por Expo, incluyendo el SDK de Expo?

En esta página: https://docs.expo.io/versions/v35.0.0/sdk/facebook/ Dice que necesitará ejecutar expo install expo-facebook. Entonces, ¿lo incluye por defecto o necesita instalarlo para que se incluya?

Gracias

ideSeptiembre 25, 2019

Las aplicaciones administradas actualmente incluyen el SDK de Facebook. Cuando ejecuta expo install expo-facebook, ese comando calcula la versión correcta del paquete expo-facebook para su proyecto y simplemente ejecuta npm install. El código Objective-C y Java para expo-facebook ya está en el cliente Expo (para desarrollo) y en aplicaciones gestionadas (para producción).

El SDK de Facebook también tiene algunas opciones nuevas para deshabilitar más partes de él de forma predeterminada y, a continuación, volver a habilitarlas de forma programática. Lo ideal sería que una aplicación de la Expo que no utilice Facebook Login ni Ads no enviara ninguna solicitud de red a Facebook. Necesitaremos investigar estas nuevas opciones más para determinar su comportamiento real y planeamos hacerlo en la próxima versión o dos.

Continúe la discusión