Plots2: PROBLEMA DE PLANIFICACIÓN: Responder a través de Twitter.

Creado en 28 abr. 2018  ·  72Comentarios  ·  Fuente: publiclab/plots2

Describa el problema (o idea)

Este es un problema de planificación para la respuesta de Twitter: característica.

Primero analicemos el mejor enfoque y luego lo dividiremos en problemas independientes más pequeños.

Más detalles 🔜!

=> Integración de correo electrónico #2672 ( @namangupta01 )

feature in progress more-detail-please planning summer-of-code

Comentario más útil

Como @jywarren , ¿deberíamos fusionar el sistema OA con él?

Todos 72 comentarios

¡Frio! ¡Enlace al nuevo número de Naman también!

El sábado 28 de abril de 2018 a las 3:25 a. m. Sagarpreet Chadha [email protected]
escribió:

Describa el problema (o idea)

Este es un problema de planificación para la respuesta de Twitter: función.

Primero discutamos el mejor enfoque y luego dividiremos esto en
problemas independientes más pequeños.

Más detalles 🔜!


Estás recibiendo esto porque estás suscrito a este hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671 , o silencia el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ6EpFnMq_H5zR8vLtf7kXWZJbELxks5ttBlcgaJpZM4TrSYe
.

@namangupta01 , @jywarren ...comencemos la discusión sobre esto ? ¿Cuándo están libres los dos?

¡Sí!
El 14 de junio de 2018 a las 12:55, "Sagarpreet Chadha" [email protected] escribió:

@namangupta01 https://github.com/namangupta01 , @jywarren
https://github.com/jywarren ...comencemos la discusión sobre esto? Cuándo
¿ambos están libres?


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-397198245 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ATwCYebYN7qM2c0Emtdw2jhwYIILp5r1ks5t8g_fgaJpZM4TrSYe
.

Tengo alguna implementación en mente... la publicaré en un tiempo.

Joe (que acaba de empezar a trabajar con el personal de Public Lab) tuvo una muy buena
pregunta: ¿sería este un canal para publicar spam? ¿Tenemos que preocuparnos?
sobre el spam de los bots de Twitter, o tal vez pensar en una estrategia de moderación?

¿De qué maneras podemos estar atentos a esto? ¡Lluvia de ideas abierta!

Como, tal vez los tweets de respuesta tienen que ser "me gusta" por... ¿alguien?

El jueves 14 de junio de 2018 a las 4:47 a. m. Naman Gupta [email protected]
escribió:

Tengo alguna implementación en mente... la publicaré en un tiempo.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-397237305 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ_g3eeUD8-7bvLjXmQLYIz0LYM1qks5t8jEFgaJpZM4TrSYe
.

El spam es el problema principal. Estaba leyendo la documentación de los últimos días. También me preguntaba si implementamos como dijiste "los tweets de respuesta tienen que gustar". Encontré un problema importante.
El problema es que cada vez que un usuario retuitea en un tuit (que es un nodo) podemos saber sobre el retuit a través de apis, pero cuando el retuit le gusta no podemos saberlo. La única forma de saberlo es buscar cada estado de retweet después de cierto intervalo de tiempo, lo cual es muy malo porque supongamos que tenemos 10k retweets y luego tenemos que buscar el estado de 10k retweets para que nos gusten en cierto intervalo de tiempo. Y también esta cifra de 10k seguirá aumentando con el tiempo.

Y también un punto principal que podría llevar a que no se envíe correo no deseado es que solo podemos agregar los tweets de aquellos usuarios cuyo identificador de Twitter esté asociado a cualquier cuenta de laboratorio público, tal como lo estábamos haciendo en reply-by-email donde el correo electrónico del remitente es el primero. comprobó la asociatividad con la cuenta publiclab.
Esto podría llevar a que no haya spam.

@namangupta01 ... ¡excelentes puntos!

  • El spam es el problema aquí, supongo que la única técnica de moderación en la que también puedo pensar es que un moderador tiene que aprobar el comentario en un tweet dándole me gusta (similar a cómo funcionan las cosas en publiclab.org).
    => el moderador puede ser gente con la cuenta de twitter de PublicLab O una persona de la comunidad de PL a la que le haya gustado desde su propia cuenta.

  • Supongo que el objetivo es traer a un miembro que sea nuevo a la comunidad, por lo que traer comentarios de personas existentes resolverá la mitad del problema.

Qué piensas ?

¡Gran pensamiento! Pero el único punto que me preocupa es que tenemos que verificar explícitamente que el tweet sea del agrado en cada solicitud de todos los tweets en los tweets de publiclab, lo que puede convertirse en una solicitud muy grande a medida que aumentan los tweets.

Y la mayor parte del tiempo estaremos solicitando los tweets para nada... esa era mi preocupación. ¿Qué piensas?

Sin embargo, la técnica de moderación en la interfaz del sitio web de publiclab funcionaría muy bien.
¿Te gusta aprobar los comentarios?

@jywarren Como la función de correo electrónico está casi completa, ¿podríamos discutir sobre ella?

Buscaré reservar algo de tiempo para esto en uno o dos días... ¡gracias!
Tratar de tener todas las características importantes completamente listas y funcionando antes de continuar.
¡Gracias!

El lunes 25 de junio de 2018 a las 19:18 Naman Gupta [email protected]
escribió:

@jywarren https://github.com/jywarren Como la función de correo electrónico es casi
completo podríamos discutir sobre él?


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-400125415 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ-UOBtZ0G4haKmQRlSr0WJJ3Q30pks5uAW-ugaJpZM4TrSYe
.

@jywarren ¿Podemos poner node_id en los tweets? ¿Para que pueda identificarse fácilmente?

@jywarren ¿Es posible poner node_id en tweets?

¡Pienso que si! Pero apagamos el autotweet por un momento. Podríamos
reconocer enlaces como publiclab.org/n/____ a través de la API de Twitter?

El domingo 15 de julio de 2018 a las 9:26 a. m., Naman Gupta [email protected] escribió:

@jywarren https://github.com/jywarren ¿Es posible que poner
node_id en tweets?


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-405091999 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ575zPOLYU6bpFdMMkZA0vl-Xg_Yks5uG0LpgaJpZM4TrSYe
.

@jywarren Entonces publiclab.org/n/____ se presentará directamente en el tweet o hay otros enlaces que redirigen a este enlace como antes.
ex:
screen shot 2018-07-17 at 2 07 32 am

Estaba investigando y descubrí que todos los enlaces que aparecen en los tweets a través de la API de Twitter son enlaces de Twitter que se redireccionan a la página real. Me preguntaba si usamos el enlace para encontrar el nodo y el tweet contiene más de un public.org/n/__ (uno para hacer referencia a la publicación en el laboratorio público y otro puede usarse en cualquier contenido del nodo en la publicación del laboratorio público en sí) entonces en ese ¿El comentario del caso puede agregarse al nodo incorrecto porque no sabemos cuál es el nodo real en el que debemos agregar este comentario? ¿Qué piensas?
screen shot 2018-07-17 at 3 40 13 am
screen shot 2018-07-17 at 3 40 23 am

@jywarren Entonces, ¿de qué manera debería implementarlo? usando node_id o al revés. Estoy ultimando la forma de implementación.

Esto es un poco más complejo cuando no tenemos el tweet automático,
porque no llegamos a formatear el original. Puedo mencionarlo en nuestro personal.
llame o abra la llamada hoy (https://publiclab.org/opencall) y podemos intentar
encontrar un buen camino a seguir!

El lunes 16 de julio de 2018 a las 18:20 Naman Gupta [email protected]
escribió:

Estaba investigando y descubrí que todos los enlaces que vienen en tweet a través de
twitter api es un enlace de twitter que se redirige a la página real. era
me pregunto si usamos el enlace para encontrar el nodo y el tweet contiene más de uno
public.org/n/__ (uno para hacer referencia a la publicación en el laboratorio público y otro puede ser
utilizado en cualquiera de los contenidos del nodo en la publicación del laboratorio público en sí) entonces, en ese caso
el comentario puede agregarse al nodo incorrecto porque no sabemos cuál es el
nodo real debemos agregar este comentario? ¿Qué piensas?
[imagen: captura de pantalla 2018-07-17 a las 3 40 13 am]
https://user-images.githubusercontent.com/20709985/42786554-59b06d14-8974-11e8-96bd-e2c804da47c9.png
[imagen: captura de pantalla 2018-07-17 a las 3 40 23 am]
https://user-images.githubusercontent.com/20709985/42786555-59f820f0-8974-11e8-9aa8-ef78abc46dfe.png


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-405399249 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJwu8hr_XV85dxj3NlaTRgsBCaZ8jks5uHRF3gaJpZM4TrSYe
.

Voy a usar la gema de Twitter con la que también podemos hacer tweets automáticos, solo quiero que sepas que podemos hacer tweets automáticos sin usar ningún servicio. Buscaré la forma de formatear.

OK, entonces lo que estamos pensando es:

  1. comience implementando solo las respuestas de los usuarios de Twitter "reconocidos", utilizando el sistema de inicio de sesión OAuth
  2. intente encontrar tweets aislando publiclab.org/n/_____
  3. ¿podríamos mostrar todos los comentarios en una lista solo a los moderadores y permitir que sean "aprobados" de alguna manera? ¿Puedes pensar cómo podría funcionar eso?
  4. si comenzamos a permitir todas las respuestas twitteadas, consideremos tener una forma de "apagarlo" si comenzamos a recibir MUCHO spam, de esa manera podemos probar las cosas.
  5. ¿Hay formas de mostrar un tweet incrustado con sus respuestas y luego, si hay respuestas twitteadas, notificar al autor original, pero sin copiarlas realmente?

Acabo de recibir una llamada de @SidharthBansal. Pregunté sobre esto. Por lo tanto, no estamos guardando el identificador de Twitter en este momento, que es necesario para reconocer a los usuarios. Creo que deberíamos guardarlo en algún lugar para que podamos reconocerlo. @jywarren ?

@namangupta01 puede migrar el modelo de etiqueta de usuario y agregar un campo de controlador.
Si necesita más ayuda, no dude en ponerse en contacto conmigo.
Gracias

https://github.com/publiclab/plots2/blob/master/doc/Omniauth.md
https://github.com/publiclab/plots2#ssl -en desarrollo
laboratorio público/plots2#2893
estos seguramente te ayudaran

Gracias Sidharth! :)

El jueves 19 de julio de 2018 a las 21:55 Sidharth Bansal [email protected]
escribió:

https://github.com/publiclab/plots2/blob/master/doc/Omniauth.md
https://github.com/publiclab/plots2#ssl -en desarrollo
publiclab/plots2#2893 https://github.com/publiclab/plots2/issues/2893
estos seguramente te ayudaran


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-406336137 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ATwCYUJLLS9Lc722_YJWLBdLhWed_orrks5uILMDgaJpZM4TrSYe
.

Creo que request.env['omniauth.auth']["info"]["urls"]funcionará.

IMPORTANTE: Todos los proveedores dan diferentes campos en su hash con diferentes nombres. Por lo tanto, tenga cuidado de completar la información de todos los demás proveedores: el campo de URL como NULL si no son Twitter

Vea los hash dados aquí y compare:

https://github.com/arunagw/omniauth-twitter
https://github.com/mkdynamic/omniauth-facebook
https://github.com/omniauth/omniauth-github
https://github.com/zquestz/omniauth-google-oauth2

Ver que hay hashes son diferentes. Además, tome mis reseñas en sus prs. Estaré encantado de ayudar.

Google_oauth2 también tiene el mismo nombre --> información -->urls
Pero Facebook tiene un controlador en extra_info. Por lo tanto, busque [extra][raw_info][link] y guárdelo en user_tag como controlador.
Github --> No está escrito en la documentación. Puede ser que no proporciona. Busque si github proporciona que asigne el controlador de github a este campo
Todos aquellos que no se pueden configurar en un controlador como Github, puede ponerlos como NULL.

@jywarren , ¿debería hacer una columna separada para cada autenticación?

modelo de etiqueta de usuario y agregar campo de controlador

Me pregunto si podríamos crear un conjunto de campos oa- personalizados adicionales
para esta información en un sistema clave:valor plano, en lugar de migrar el
base de datos... Sidharth, ¿qué te parece?

El jueves 19 de julio de 2018 a las 14:18 Naman Gupta [email protected]
escribió:

@jywarren https://github.com/jywarren ¿debería hacer una columna separada para
cada juramento?


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-406368740 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ_XCeor_CeJB2aXO3eJHr0FJhX2rks5uIM1agaJpZM4TrSYe
.

No necesitamos complicar mucho user_tag. Debe ser fácilmente comprensible para los recién llegados.
Necesitamos agregar campos muchas veces en el futuro. Entonces, considere la situación que hicimos de acuerdo con este enfoque, entonces los proveedores tendrán valor como uid: proveedor : controlador. Github no proporciona ningún controlador. Ahora viene la situación, necesitamos que la imagen se muestre en la página de perfil. Así que esto creará un problema. Entonces, necesitamos migrar la base de datos. Entonces, mi opinión es migrar la base de datos a partir de ahora.

Necesitamos ver la situación en la que en el futuro necesitamos implementar publicaciones dentro y fuera de Facebook o Twitter después de iniciar sesión, entonces también necesitaremos otros campos. No podemos hacer que el valor sea más largo.

El sistema plano también es una buena opción. Pero me preocupa la mejor legibilidad de las etiquetas de usuario para el futuro.

Pensemos en esto: ¿qué modificación exactamente del modelo user_tag está buscando? ¿Podríamos agregar solo una columna de texto y almacenar JSON en ella? Estoy tratando de pensar en la forma más fácil de mantener y flexible, por lo que no tenemos muchas funciones muy específicas en el modelo de etiqueta de usuario que no se puedan reutilizar para diferentes propósitos. ¿Tener sentido?

¡Gracias a todos!

@jywarren sí, entendí tu punto. Agreguemos el campo val de user_tag.

Creo que usar un campo de texto más largo podría ser útil para muchas cosas, así que
si solo desea tener una colección de otras cosas para almacenar junto con
the key:value , podríamos hacer eso...

El jueves 19 de julio de 2018 a las 6:00 p. m. Sidharth Bansal [email protected]
escribió:

@jywarren https://github.com/jywarren sí, entendí tu punto. Vamos
agregue el campo val de user_tag.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-406427465 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ4Hlow0UZgw-e-I0WBp9Lpt0MiC0ks5uIQFKgaJpZM4TrSYe
.

@SidharthBansal Cada vez que inicio sesión a través de Twitter en local, se redirige al sitio web del laboratorio público. ¿Alguna idea?

Supongo que entendí por qué está ocurriendo

@SidharthBansal recibo este error, por favor, ayuda:
screen shot 2018-07-21 at 12 28 05 am

screen shot 2018-07-21 at 12 30 17 am

Agregue configuraciones avanzadas para permitir https para sitios web no seguros

127.0.0.1:3001 no es seguro

Resuelto gracias @SidharthBansal 👍

@jywarren Hoy estaba buscando cómo se puede lograr el sistema plano.
El siguiente archivo es el archivo principal en mi Soc Project.
https://github.com/publiclab/plots2/blob/f2fe98da351a562152a85bd068acb1a9e6e7f7c0/app/models/user_tag.rb#L24 -L30
Si agregamos la cadena, todo el Proyecto Soc necesitará actualizarse en varias posiciones. Además, todas las pruebas fallarán. Necesitamos escribir todas las pruebas de nuevo.
@ namangupta01 ¿qué sugieres?
Si creamos un nuevo campo en la base de datos, entonces el proyecto Soc se puede modificar sin ningún conflicto. Todas las pruebas y el código para Soc Project permanecerán como están.

Creo que @jywarren dijo aquí que podemos agregar un nuevo campo de texto donde podemos almacenar el objeto JSON que estamos recibiendo en respuesta.

Pensemos en esto: ¿qué modificación exactamente del modelo user_tag está buscando? ¿Podemos > añadir sólo una columna de texto, y almacenar JSON en ello? Estoy tratando de pensar en la forma más mantenible y > > flexible, así que no tenemos muchas características muy específicas en el modelo de etiqueta de usuario que no será
reutilizable para diferentes propósitos. ¿Tener sentido?

¿Tengo razón @jywarren ?

Esperemos la entrada de jeffs.

Sí......

Mi otra preocupación es que cuando busquemos nuevas respuestas en Twitter cada 5 segundos o cada 10 segundos, encontraremos si existe o no un identificador particular en la base de datos. Supongamos que en cada respuesta recibimos algunas respuestas y luego tenemos que encontrar los identificadores para eso, analizaremos el campo de texto para extraer el identificador y verificar si ese identificador existe o no. ¿Aumentaría la complejidad temporal del sistema? ¿Porque por cada verificación de manijas estaremos haciendo O(n) trabajo? Y tampoco la indexación funcionaría en este caso para hacer que la transacción de db sea más rápida.
Lo siento , @jywarren, esto está tomando algo de tiempo porque quiero que me confirmen por completo sobre la implementación antes de abrir el pr, ya que será un sistema complejo.

¡Hola! Sí, estaba diciendo que si hay mucho contenido que desea almacenar
juntos de una manera menos plana, podríamos hacer una columna de texto data en el
tabla user_tag y almacene JSON en ella. Pero, ¿puede ofrecer un ejemplo claro de
el tipo de datos que desea almacenar para que sepamos si es apropiado
forma de guardarlo? ¡Gracias!

Por la complejidad, estoy de acuerdo, esto podría crear una carga significativa. Puedes
escribir pseudocódigo para la serie de consultas y puedo ayudar a optimizar? estoy
pensando, podríamos crear una consulta más eficiente, pero ayúdame a descubrir el
primero los pasos deseados. ¡Gracias!

El viernes 20 de julio de 2018 a las 4:00 p. m. Naman Gupta [email protected]
escribió:

Mi otra preocupación es que cuando hagamos una encuesta para obtener nuevas respuestas en Twitter en
cada 5 segundos o cada 10 segundos vamos a encontrar si particular
manejar existe o no en la base de datos. Supongamos que en cada respuesta tenemos algunos
responde y luego tenemos que encontrar los identificadores para los que analizaremos
el campo de texto para extraer el identificador y comprobar si existe ese identificador
O no. ¿Aumentaría la complejidad temporal del sistema? Porque para
cada control de manejo estaremos haciendo trabajo O(n)? Y también sin indexación.
funcionaría en este caso para hacer que la transacción db sea más rápida.
Lo siento @jywarren https://github.com/jywarren esto está tomando algo de tiempo
porque quiero estar completamente confirmado sobre la implementación antes
abriendo el pr ya que va a ser un sistema complejo.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-406711222 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ7Z9x-9Cwedez8T-gsMnYR4VQ75zks5uIjbCgaJpZM4TrSYe
.

Pseudocode:

  1. Obtenga las últimas respuestas de Twitter:
  2. Por cada respuesta en respuestas:
    verifique si pertenece a algún nodo o publicación usando publiclab.org/n/_____ y si ese nodo existe, luego busque si el usuario existe usando el contestador de tweets. Si el usuario existe, agregue el comentario.
    tweets = client.search("to:publiclab", since_id: 23423423).collect do |tweet| node = Node.where(some_condition) #To find if node exists if node.any? node = node.first tweet_user = tweet.user UserTag.all.each do |user_tag| if(some_condtion_to_check if user handle exists) add_comment end end end end

A partir de ahora, solo necesito almacenar el identificador de Twitter, pero no sé qué función
queremos en el futuro como foto de perfil y más?

El sábado 21 de julio de 2018 a la 1:52 a. m. Jeffrey Warren [email protected]
escribió:

¡Hola! Sí, estaba diciendo que si hay mucho contenido que desea almacenar
juntos de una manera menos plana, podríamos hacer una columna de texto data en el
tabla user_tag y almacene JSON en ella. Pero, ¿puede ofrecer un ejemplo claro de
el tipo de datos que desea almacenar para que sepamos si es apropiado
forma de guardarlo? ¡Gracias!

Por la complejidad, estoy de acuerdo, esto podría crear una carga significativa. Puedes
escribir pseudocódigo para la serie de consultas y puedo ayudar a optimizar? estoy
pensando, podríamos crear una consulta más eficiente, pero ayúdame a descubrir el
primero los pasos deseados. ¡Gracias!

El viernes 20 de julio de 2018 a las 4:00 p. m. Naman Gupta [email protected]
escribió:

Mi otra preocupación es que cuando encuestaremos para obtener nuevas respuestas en Twitter.
en
cada 5 segundos o cada 10 segundos vamos a encontrar si particular
manejar existe o no en la base de datos. Supongamos que en cada respuesta tenemos algunos
responde y luego tenemos que encontrar los identificadores para los que analizaremos
el campo de texto para extraer el identificador y comprobar si ese identificador
existe
O no. ¿Aumentaría la complejidad temporal del sistema? Porque para
cada control de manejo estaremos haciendo trabajo O(n)? Y también sin indexación.
funcionaría en este caso para hacer que la transacción db sea más rápida.
Lo siento @jywarren https://github.com/jywarren esto está tomando algo de tiempo
porque quiero estar completamente confirmado sobre la implementación antes
abriendo el pr ya que va a ser un sistema complejo.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
< https://github.com/publiclab/plots2/issues/2671#issuecomment -406711222
,
o silenciar el hilo
<
https://github.com/notifications/unsubscribe-auth/AABfJ7Z9x-9Cwedez8T-gsMnYR4VQ75zks5uIjbCgaJpZM4TrSYe

.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-406716657 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ATwCYaP_Iy1H4Uxs83vmG95ucdrSLgxtks5uIjwCgaJpZM4TrSYe
.

Hola, @jywarren . He agregado migración para guardar JSON para la respuesta de omniautenticación en el n.

@jywarren ¿ algún comentario y comentario sobre pseudocode y pr?

Espero completar esto lo antes posible.

¿Puede compartir una salida JSON típica que se almacenaría en esta nueva columna, para que podamos ver? ¡Gracias!

Para el pseudocódigo, ¿podría hacer algo como:

since = comments.where(since_id not null).last # get most recent comment-from-tweet time
tweets = client.search("to:publiclab", since_id: 23423423).collect do |tweet|
 node = Node.where(some_condition) #To find if node exists
 if node.any?
   node = node.first
   tweet_user = tweet.user
   ruser = UserTag.find_by(twitter_id: tweet.user)
   add_comment(since_id: since, ruser) unless ruser.nil? 
end
end

¿Podría ser más óptimo?

Aquí está el JSON de muestra:
````
{
"proveedor":"twitter",
"uid":"849503183529545728",
"información":{
"apodo":"itsmenamangupta",
"nombre":"Naman Gupta",
"correo electrónico":" [email protected] ",
"ubicación":"",
"imagen":" http://pbs.twimg.com/profile_images/950001110378401793/mBAtBXyI_normal.jpg ",
"descripción":"GSoC'18 @PublicLab",
"URL":{
"Sitio web":" https://t.co/fqLSxIlYFH ",
"Twitter":" https://twitter.com/itsmenamangupta "
}
},
"cartas credenciales":{
"token":"849503183529545728-fgqcxtgihvrrKd2icj67QpspT5bKntD",
"secreto":"ZDTD5HsexliY2Tnrv6aSEVSqPVvbDLY2YDW9S5VeDmmyK"
},
"extra":{
"token_de_acceso":{
"token":"849503183529545728-fgqcxtgihvrrKd2icj67QpspT5bKntD",
"secreto":"ZDTD5HsexliY2Tnrv6aSEVSqPVvbDLY2YDW9S5VeDmmyK",
"consumidor":{
"clave":"H59J9kJBVQvtZvWhr2SUAht4o",
"secreto":"GEQOygPITjGj2Imzg5ALJeCqE0GdQU2GAmTYOS9kEPcLVlMxQu",
"opciones":{
"signature_method":"HMAC-SHA1",
"request_token_path":"/oauth/request_token",
"autorizar_ruta":"/oauth/autenticar",
"ruta_token_acceso":"/oauth/token_acceso",
"proxy": nulo,
"esquema":"encabezado",
"http_method":"publicación",
"debug_output": nulo,
"oauth_version":"1.0",
"sitio":" https://api.twitter.com "
},
"debug_output": nulo,
"http":{
"dirección":"api.twitter.com",
"puerto":443,
"local_host": nulo,
"puerto_local": nulo,
"curr_http_version":"1.1",
"keep_alive_timeout":2,
"último_comunicado": nulo,
"close_on_empty_response": falso,
"zócalo": nulo,
"empezado": falso,
"tiempo de espera_abierto":30,
"read_timeout":30,
"continue_timeout": nulo,
"debug_output": nulo,
"proxy_from_env": verdadero,
"proxy_uri": nulo,
"dirección_proxy": nulo,
"proxy_port": nulo,
"proxy_user": nulo,
"proxy_pass": nulo,
"use_ssl": verdadero,
"ssl_contexto":{
"verificar_modo":0,
"verificar_nombre de host": verdadero
},
"ssl_sesión":{

           },
           "sspi_enabled":false,
           "ca_file":null,
           "ca_path":null,
           "cert":null,
           "cert_store":null,
           "ciphers":null,
           "key":null,
           "ssl_timeout":null,
           "ssl_version":null,
           "verify_callback":null,
           "verify_depth":null,
           "verify_mode":0
        },
        "http_method":"post",
        "uri":"https://api.twitter.com"
     },
     "params":{
        "oauth_token":"849503183529545728-fgqcxtgihvrrKd2icj67QpspT5bKntD",
        "oauth_token_secret":"ZDTD5HsexliY2Tnrv6aSEVSqPVvbDLY2YDW9S5VeDmmyK",
        "user_id":"849503183529545728",
        "screen_name":"itsmenamangupta"
     },
     "response":{
        "cache-control":[
           "no-cache, no-store, must-revalidate, pre-check=0, post-check=0"
        ],
        "connection":[
           "close"
        ],
        "content-disposition":[
           "attachment; filename=json.json"
        ],
        "content-length":[
           "664"
        ],
        "content-type":[
           "application/json;charset=utf-8"
        ],
        "date":[
           "Sat, 21 Jul 2018 10:51:03 GMT"
        ],
        "expires":[
           "Tue, 31 Mar 1981 05:00:00 GMT"
        ],
        "last-modified":[
           "Sat, 21 Jul 2018 10:51:03 GMT"
        ],
        "pragma":[
           "no-cache"
        ],
        "server":[
           "tsa_k"
        ],
        "set-cookie":[
           "personalization_id=\"v1_pEJH6fv6zGSET2PG1MYRCw==\"; Expires=Mon, 20 Jul 2020 10:51:03 GMT; Path=/; Domain=.twitter.com",
           "lang=en; Path=/",
           "guest_id=v1%3A153217026311648297; Expires=Mon, 20 Jul 2020 10:51:03 GMT; Path=/; Domain=.twitter.com"
        ],
        "status":[
           "200 OK"
        ],
        "strict-transport-security":[
           "max-age=631138519"
        ],
        "x-access-level":[
           "read-write-directmessages"
        ],
        "x-connection-hash":[
           "cf7caac1e8db2d46c6043fb2287ca32b"
        ],
        "x-content-type-options":[
           "nosniff"
        ],
        "x-frame-options":[
           "SAMEORIGIN"
        ],
        "x-rate-limit-limit":[
           "75"
        ],
        "x-rate-limit-remaining":[
           "71"
        ],
        "x-rate-limit-reset":[
           "1532170356"
        ],
        "x-response-time":[
           "238"
        ],
        "x-transaction":[
           "0085940a005f5411"
        ],
        "x-twitter-response-tags":[
           "BouncerExempt",
           "BouncerCompliant"
        ],
        "x-xss-protection":[
           "1; mode=block; report=https://twitter.com/i/xss_report"
        ]
     }
  },
  "raw_info":{
     "id":849503183529545728,
     "id_str":"849503183529545728",
     "name":"Naman Gupta",
     "screen_name":"itsmenamangupta",
     "location":"",
     "description":"GSoC'18 @PublicLab",
     "url":"https://t.co/fqLSxIlYFH",
     "entities":{
        "url":{
           "urls":[
              {
                 "url":"https://t.co/fqLSxIlYFH",
                 "expanded_url":"http://www.namangupta.me",
                 "display_url":"namangupta.me",
                 "indices":[
                    0,
                    23
                 ]
              }
           ]
        },
        "description":{
           "urls":[

           ]
        }
     },
     "protected":false,
     "followers_count":16,
     "friends_count":32,
     "listed_count":0,
     "created_at":"Wed Apr 05 06:05:16 +0000 2017",
     "favourites_count":86,
     "utc_offset":null,
     "time_zone":null,
     "geo_enabled":false,
     "verified":false,
     "statuses_count":42,
     "lang":"en",
     "contributors_enabled":false,
     "is_translator":false,
     "is_translation_enabled":false,
     "profile_background_color":"000000",
     "profile_background_image_url":"http://abs.twimg.com/images/themes/theme1/bg.png",
     "profile_background_image_url_https":"https://abs.twimg.com/images/themes/theme1/bg.png",
     "profile_background_tile":false,
     "profile_image_url":"http://pbs.twimg.com/profile_images/950001110378401793/mBAtBXyI_normal.jpg",
     "profile_image_url_https":"https://pbs.twimg.com/profile_images/950001110378401793/mBAtBXyI_normal.jpg",
     "profile_link_color":"FFFFFF",
     "profile_sidebar_border_color":"000000",
     "profile_sidebar_fill_color":"000000",
     "profile_text_color":"000000",
     "profile_use_background_image":false,
     "has_extended_profile":true,
     "default_profile":false,
     "default_profile_image":false,
     "following":false,
     "follow_request_sent":false,
     "notifications":false,
     "translator_type":"none",
     "suspended":false,
     "needs_phone_verification":false,
     "email":"[email protected]"
  }

}
}
````

Sí, podemos usar el código especificado por usted, ¿necesitaremos la columna user_tag twitter_id la tabla user_tag?

sí, el problema es que no puedes buscar por json, probablemente... podrías
búsqueda de texto completo pero es un poco caro, ¿verdad? @sidharthBansal - ¿Qué hacer?
¿Crees que es un buen enfoque aquí?

El lunes 23 de julio de 2018 a las 15:49 Naman Gupta [email protected]
escribió:

Sí, podemos usar el código especificado por usted, necesitaremos la columna twitter_id
en la tabla user_tag?


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-407178930 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJxV7kQpSKvSyCCpDQlFN6fWT_-yqks5uJiibgaJpZM4TrSYe
.

Sí, lo haría caro.
¿Agregar username directos a la columna para todos los servicios de autenticación ayudaría?

Hola chicos, solo quiero recordar que también almacenamos nombres de usuario para varias cuentas sociales en etiquetas de usuario, por lo que si deciden cambiar a tablas para almacenar el nombre de usuario, abran un problema de seguimiento para fusionar ese sistema. ¡Gracias!

¿Valdría la pena generar automáticamente la etiqueta de estilo [twitter:jywarren] desde el
¿Sistema de OA? Necesitamos tener cuidado de que nadie asocie falsamente su
cuenta usando las etiquetas de estilo [twitter:jywarren], así que tal vez necesitemos
combinar estos; Gaurav, ¿podría explicar un poco cómo funciona ese sistema?
¿obras?

El lunes 23 de julio de 2018 a las 16:39 Gaurav Sachdeva [email protected]
escribió:

Hola chicos, solo quiero recordar que almacenamos nombres de usuario para varias redes sociales.
cuentas en etiquetas de usuario también, por lo que si deciden cambiar a tablas para
almacenando el nombre de usuario entonces, abra un problema de seguimiento para fusionar ese sistema.
¡Gracias!


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-407193340 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AABfJ79eJpa40xw7imZ_m2K8A2B3F4v0ks5uJjRdgaJpZM4TrSYe
.

Hola chicos, solo quiero recordar que también almacenamos nombres de usuario para varias cuentas sociales en etiquetas de usuario, por lo que si deciden cambiar a tablas para almacenar nombres de usuario, abran un problema de seguimiento para fusionar ese sistema. ¡Gracias!

Hola, @Gauravano , hasta ahora no estamos almacenando los nombres de usuario de los usuarios de las redes sociales. Actualmente solo se guardan la identificación de usuario y el nombre del proveedor.
@Gauravano , ¿puede explicar qué problema está señalando? No estamos haciendo mesas nuevas. Estamos migrando la etiqueta de usuario.

Sí, podemos usar el código especificado por usted, ¿necesitaremos la columna twitter_id en la tabla user_tag?

sí, el problema es que no puedes buscar por json, probablemente... podrías buscar texto completo pero es un poco caro, ¿verdad? @SidharthBansal : ¿cuál cree que es un buen enfoque aquí?

@jywarren , @namangupta01 podemos almacenar el nombre de usuario.

Debemos tener cuidado de que nadie asocie falsamente su cuenta con las etiquetas de estilo [twitter:jywarren], así que tal vez debamos combinarlas.

He enviado un pr en abril para este caso. Nadie puede crear ninguna etiqueta con el nombre oauth:________
Por lo tanto, no hay necesidad de preocuparse por este problema. Puedes verificar esto yendo a la página de perfil.
Captura de pantalla para una mejor comprensión.
image

¿Valdría la pena generar automáticamente la etiqueta de estilo [twitter:jywarren] desde el sistema OA?

@jywarren Actualmente estamos generando las etiquetas de usuario de OAuth SOLAMENTE desde OAuth. No hay otra manera de generarlos.

¿Agregar un nombre de usuario directo a la columna para todos los servicios de autenticación ayudaría?

Agregar varias columnas una y otra vez no ayudaría. Sugeriré encarecidamente almacenar todo el hash y usar lo que necesitemos cuando surja la necesidad. Por ejemplo, after naman usa el controlador del hash de autenticación. Podemos usar la imagen de la URL de la imagen para mostrarla en la página de perfil del laboratorio público. Actualmente usamos Gravatar.

Problema relacionado #3125
Estamos almacenando el controlador. Algunos proveedores permiten que el usuario cambie su controlador. Por lo tanto, necesitamos un método para cambiar el hash de autenticación cada vez que el usuario inicia sesión O cuando caduca la autenticación. La autenticación proporciona la fecha y hora de caducidad. Entonces podemos usar eso y actualizar el hash de autenticación en consecuencia. Analice este tema secundario en el n.º 3125 para que podamos ceñirnos a la migración de etiquetas de usuario en este problema.

Gracias

Hola @jywarren @SidharthBansal @namangupta01 , me refería a este sistema:

Proporcionamos a los usuarios de PL que ingresen sus diversos nombres de usuario de redes sociales como este:
this_one

El usuario agrega la plataforma social como clave y su nombre de usuario como valor.
user_2

Después de que esa etiqueta de usuario se agregue a su perfil-
profile_tags

¡Gracias!

@Gauravano Supongo que usar esto no será bueno porque puedo agregar cualquier nombre de usuario que desee.

Como @jywarren , ¿deberíamos fusionar el sistema OA con él?

De acuerdo, almacenar el hash tiene sentido: ¿por qué la conversión adicional, verdad? Frio.

Y +1 fusionando estos sistemas. ¡El sistema anterior es excelente, pero se beneficiaría de la integración aquí por las razones anteriores! ¡Gracias a todos!

sí, almacenar hash parece una buena opción👍

El martes 24 de julio de 2018 a las 22:45 Jeffrey Warren [email protected]
escribió:

De acuerdo, almacenar el hash tiene sentido: ¿por qué la conversión adicional, verdad?
Frio.

Y +1 fusionando estos sistemas. El sistema anterior es excelente, pero
Benefíciese de la integración aquí por las razones anteriores. ¡Gracias a todos!


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/publiclab/plots2/issues/2671#issuecomment-407482926 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ATwCYU7kYuvbVUbybfTrYum5r2lVLYevks5uJ1Y-gaJpZM4TrSYe
.

@jywarren @Gauravano @SidharthBansal , ¿pueden decirme cómo obtener hash de la cadena guardada en db porque no puedo encontrar la manera? Gracias

Hola, @Gauravano , le recomiendo enfáticamente que abra otra edición para fusionar íconos de redes sociales con OA y que la vincule aquí para que la discusión no sea divergente.
Gracias por la buena sugerencia.

Hola , @SidharthBansa , ya probé los enlaces anteriores pero no funcionaron.

Tengo el problema... tenemos que convertir explícitamente la variable auth en hash para resolverlo.

¿Fue útil esta página
0 / 5 - 0 calificaciones