Pasar al contenido principal

Incrustando cosas mediante su URL usando oEmbed

Martes 02 de Junio de 2020

Durante la labor de creación de contenidos no es raro querer hacer referencia a contenidos externos, desde simples documentos o páginas web hasta contenido multimedia o específico como tuits o posts de otras plataformas.

Los enlaces son uno de los pilares de la web, pero a veces se quiere algo más integrado. Si se quiere hacer referencia a un tuit, ¿por qué no embeberlo en nuestro contenido? Un caso muy habitual es un vídeo de Youtube o Vimeo, de forma que se pueda reproducir sin salir de la página. Otro caso puede ser visualizar un archivo PDF de Scribd.

Embebiendo contenidos con oEmbed

Para conseguir esto hay módulos Drupal específicos para cada caso, o genéricos pero centrados en un área, como los que integran servicios de vídeo. Otra estrategia es usar algo como oEmbed. oEmbed es un formato que permite describir representaciones de URL para se embebidas en otras páginas web. Es decir, es una forma mediante la cual un proveedor (YouTube, Twitter, Scribd, Flickr, etc) puede describir a un consumidor (nuestra página web, por ejemplo, con su Drupal) la forma de representar en el consumidor un recurso de ese proveedor.

O veamos un ejemplo práctico. Este artículo ha sido tuiteado por el usuario Metadrop de Twitter. Este tuit tiene una URL. Bien, pues usando oEmbed basta con usar esa URL para obtener este resultado:

¡Fantástico! Obviamente el artículo ha tenido que ser tuiteado y después rápidamente editado para añadir la URL del tuit, ¡las referencias circulares nunca fueron fáciles! 

Módulo URL Embed

Insertar contenido usando oEmbed requiere que el sitio Drupal de soporte a este formato. Pero estamos de suerte, ya que la iniciativa Drupal para multimedia ha creado el módulo URL Embed. El módulo integra oEmbed y permite usarlo en campos CKEditor una forma muy sencilla mediante un diálogo en el propio CKEditor.

Diálogo de inserción de URL del módulo URL Embed.

A punto de añadir una URL a este artículo en una nueva autoreferencia.

 

La lista de proveedores que admite es larga, e incluye proveedores de vídeo, documentos, fotos y muchas otras cosas que, honestamente, desconozco.

Hagamos otra prueba. ¿Qué tal un vídeo de Vimeo?


Demostración del módulo GA Push.

¡Maravilloso!

¿Un álbum de Flickr?


Drupal Camp Madrid 2017

¡Fetén!

¿Un documento de SlideShare?

 

 

Consideraciones de seguridad

Hay un asunto delicado.  Mediante oEmbed se reciben datos HTML de fuentes externas que se muestran en nuesta web. Potencialmente, esto puede crear problemas de Cross Site Scripting:  si insertamos un código JavaSript malicioso, tendrá por ejemplo acceso a las cookies de nuestro dominio. Para mitigar este problema oEmbed sugiere mostrar los datos externos en un dominio diferente usando un iframe. Desafortunadamente, URL Embed no dispone de esta posibilidad. ¿Significa que este módulo abre un agujero de seguridad? No exactamente. El caso es que debemos confiar en el proveedor. Por ejemplo, es difícil que un servicio conocido como YouTube nos devuelva un código malicioso en su respuesta oEmbed, igual que otros servicios como Vimeo, Flickr y demás (aunque no imposible, desde luego). Pero servicios menos conocidos, y por tanto menos sujetos a escrutinio, tienen más posibilidades de devolver un código que no sea del todo seguro, ya sea por mala intención o por simple torpeza. Lógicamente, si permitimos insertar respuestas oEmbed de cualquier proveedor no será raro que en algún momento tengamos un problema.

Por tanto, basta con conocer las implicaciones se seguridad y actuar con cabeza, como suele suceder en la vida real.

Conclusión

URL Embed es un buen módulo pese a que está aún alpha. A día de hoy tiene casi 2.300 instalaciones y en nuestras pruebas no nos ha fallado. Es cierto que busca mantenedores y que no le vendría mal un poco de contribución, pero es suficientemente bueno como para usarse, siempre teniendo en cuenta las consideraciones de seguridad.

CKeditor
oEmbed