Arquisoft / faq

Frequently asked questions - Software architecture course
MIT License
4 stars 0 forks source link

Error libreria react-native @inrupt/solid-client-authn-node #9

Closed PascualDaniel closed 2 years ago

PascualDaniel commented 3 years ago

Haciendo la app móvil estoy investigando el login de los pods en react-native, y me da error, estoy utilizando la librería @inrupt/solid-client-authn-node para ello y siguiendo los métodos de su documentacion , paso por imagen el código y el error por si es útil.

PascualDaniel commented 3 years ago

image image

PascualDaniel commented 3 years ago

Capturamovil

Y el error que da react:

error: Error: Unable to resolve module events from D:\ASW\Research\ReactPruebaPrueba\node_modules\@inrupt\solid-client-authn-node\dist\Session.js: events could not be found within the project or in these directories:

node_modules\@inrupt\solid-client-authn-node\node_modules

node_modules

cidinene commented 3 years ago

Por el mensaje, parece que existe una dependencia que no es capaz de encontrar: events Yo probaría a instalar éste package y ver si hay más suerte.

pglez82 commented 3 years ago

Quizás podáis preguntar en este hilo en el que el autor de la librería solid-node-client recomienda el uso de @inrupt/solid-client-authn-node. El autor de la librería parece dispuesto a ayudar y a resolver las dudas que haya en este tema.

Como dice Irene tiene pinta de ser un problema con las librerías. Como ya habéis visto, react native no corre un entorno de node js normal así que muchas librerías no son compatibles (https://reactnative.dev/docs/libraries#determining-library-compatibility)

PascualDaniel commented 3 years ago

He instalado events, y algún paquete mas que aparecen en los errores, pero sigue sin funcionar, así que pediré ayuda por el foro a ver si encuentran la solución.

UO270571 commented 3 years ago

La solución que hemos encontrado en nuestro grupo ha sido usar la api rest para hacer el login. El usuario introduce la URL del proveedor de su pod, su nombre de usuario y su contraseña, y la app móvil envía los datos a la api rest. Después, en la api rest usamos la función login de la librería solid-node-client para autenticar al usuario y enviamos en la respuesta la información que necesitamos (de momento el WebId y su nombre). Esto realmente solo vale para comprobar que el usuario es el dueño de un pod, pero en nuestro caso es suficiente ya que no vamos a escribir nada en el pod del usuario desde la app móvil y solo vamos a consultar información pública, como la lista de amigos. Además, para que esto funcione, el usuario tiene que haber añadido https://solid-node-client a la lista de aplicaciones de confianza en su pod. En esta issue hay más información, por si os sirve de ayuda.

PascualDaniel commented 3 years ago

Nuestra implementación sería con fire-base, pero es mas o menos el mismo método, así que muchas gracias 👍

labra commented 3 years ago

Esta tarde @cidinene nos comentó a los profesores que ella fue capaz de hacer una aplicación sencilla para loguearse en los pods de Solid con React-native sin usar los componentes de Solid.

Lo comento porque si algunos equipos estaban abandonando esta opción pensando que era imposible, parece que no lo es, aunque igual hay que hacerlo sin utilizar los componentes de Solid.

Si algún equipo lo conseguís, una muy buena opción sería encapsular la solución en una pequeña componente o librería que pudiese ser reutilizada por la comunidad.