L'intégration de vidéos depuis facebook.com et d'autres sites échoue

Un de mes membres a publié ce lien Facebook autonome, et Discourse a tenté de l’analyser, mais cela n’a pas fonctionné.

Laissez-moi essayer ce même lien sur sa propre ligne :

Juste au cas où vous ne le verriez pas ci-dessus, voici ce qui s’affiche :

Le problème se manifeste également avec quelques sites pour adultes où des membres tentaient de partager des liens ; j’ai fait un test rapide en collant plusieurs URLs vidéo provenant de différents endroits, et plusieurs des principaux sites pour adultes ne fonctionnent pas non plus.

Cela semble être un bug relativement sérieux, uniquement parce qu’il affecte les intégrations pour Facebook. Mes membres (moins technophiles) aiment partager des liens vers des contenus sur Facebook, en partie parce que c’est si populaire et universel. :frowning: De plus, si quelqu’un publie cette URL dans un message, elle est analysée en quelque chose qui ne fonctionne pas, et l’URL originale disparaît. Vous ne pouvez donc même pas accéder à cette URL si vous le souhaitiez… elle n’est plus du tout disponible.

Alors… est-il possible de dire à Discourse de NE PAS essayer d’intégrer automatiquement des vidéos sur ces domaines ? Je cherchais un paramètre du type « bloquer les URLs contenant ces mots pour l’intégration de médias » où je pourrais ajouter ces domaines. (Ou peut-être une liste blanche d’URLs approuvées comme YouTube et Vimeo, pour prévenir les problèmes futurs avec de nouveaux sites.)

Si ce n’est pas possible, y a-t-il une solution rapide que je puisse appliquer sur mes forums pour aider ?

Firefox (bureau)

Ici sur mon bureau, en utilisant Firefox 75 sur Mac… j’obtiens la boîte d’échec grise.

Safari (bureau)

Ici sur Safari, la première image de la vidéo s’affiche, mais lorsque vous cliquez sur le bouton « lecture », rien ne se passe.

Chrome (bureau)

En utilisant Chrome v81 sur un ordinateur de bureau Mac… la même chose… vous voyez la vidéo mais elle ne se lance jamais.

iPhone - Safari iOS

Comme avec Chrome ou Safari (bureau)… la vidéo s’affiche mais ne se lance pas.

Discourse ne prend pas officiellement en charge l’encapsulation des vidéos Facebook.

Vous pouvez consulter :

2 « J'aime »

Pouvons-nous remplacer la sortie onebox pour éviter qu’elle ne crée un lecteur cassé ? Je pense que nous devrions la faire fonctionner comme avant avant

3 « J'aime »

Oui, je dirais que c’est critique. Ce n’est pas un problème majeur pour moi que Discourse ne prenne pas en charge les vidéos Facebook. C’est un vrai problème quand un membre colle un lien (ce qui n’est pas rare) et que cela génère un message d’erreur… et que le lien original disparaît. J’ai plusieurs messages comme celui-ci dans mon forum en ce moment. Nous, les administrateurs, les corrigeons manuellement au fur et à mesure, mais évidemment, ce n’est pas une bonne solution.

Je pense qu’il s’agit d’un bug sérieux, seulement parce que Facebook (ainsi que d’autres sites de vidéos sur lesquels je l’ai testé) est extrêmement populaire.

J’aimerais beaucoup trouver une solution rapide… faites-moi savoir si je peux aider ?

4 « J'aime »

La solution la plus rapide ici serait d’ajouter www.facebook.com au paramètre : onebox domains blacklist. De cette façon, Onebox n’essaiera pas d’intégrer les vidéos de facebook.com.

3 « J'aime »

Ce qui a changé ici, c’est que Facebook a mis à jour les métadonnées OpenGraph pour ajouter des liens vidéo trop restrictifs :

<meta property="og:video:secure_url" content="https://video.fjai1-2.fna.fbcdn.net/v/t42.9040-2/10000000_626864624535070_4779621138076532736_n.mp4?_nc_cat=107&amp;_nc_sid=985c63&amp;efg=eyJybHIiOjM1MiwicmxhIjoxMzI5LCJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&amp;_nc_oc=AQkUihmrvyg1wU9qH_NjqkLUzl0XSYJGE6JREtPH7jxKc1aXEIuGLSbauCEPM-hI-DCuJRacr1hCB6HHZre1lxto&amp;rl=352&amp;vabr=196&amp;_nc_ht=video.fjai1-2.fna&amp;oh=3fd1d5e14f27d55bc0d2a91d4714148b&amp;oe=5EA6E533" />

Le lien vidéo ci-dessus affiche l’erreur : Bad URL timestamp. :man_facepalming:

Même le lien dans la balise og:image affiche la même erreur.

Nous n’avons aucune information à afficher dans la onebox Facebook, à part le titre de la vidéo. Je pense que nous devrions coder en dur la onebox pour qu’elle mette sur liste noire les liens vidéo de Facebook.

6 « J'aime »

Excellent, merci… c’est parfait.

Au passage, un rappel : ce problème se produit également sur d’autres sites que Facebook ; un membre a essayé de publier un lien vers une page vidéo sur xvideos.com et cela a échoué également. (Avertissement NSFW ! C’est VRAIMENT un site pour adultes !) J’ai testé avec quelques autres sites et j’ai constaté la même chose.

1 « J'aime »

Pour Facebook, pouvons-nous utiliser l’attribut twitter:player pour un iframe ? Il semble s’agir d’une URL non expirable :

Screenshot 2020-04-27 at 12.26.42

(Il y a tellement d’ironie à ce que Facebook serve des données opengraph cassées, mais des données Twitter fonctionnelles :joy:)

Ou alternativement, appliquer la même logique qu’Instagram. Afficher une grande miniature avec un bouton :play_or_pause_button:, qui est un lien.

4 « J'aime »

J’ai essayé cela et j’ai obtenu des liens brisés pour les balises twitter:image et twitter:player. Est-ce que cela fonctionne pour vous ?

1 « J'aime »

Sur la vidéo d’exemple de @pnoeric, je vois

<meta name="twitter:player" content="https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/">

Ce qui semble fonctionner correctement.

Mais si vous en avez trouvé qui sont cassés, alors nous devrions probablement l’éviter.

1 « J'aime »

Pour ce même lien, je vois :

https://www.facebook.com/plugins/video.php?height=222&amp;width=400&amp;href=https://www.facebook.com/dccarmen/videos/10222567743521148/

Remarquez le &amp; qui casse l’URL… le remplacer par & règle le problème. Donc oui, nous pouvons contourner cela.

Les liens twitter:image sont toujours cassés (voici un exemple).

Nous avons donc deux options :

  1. utiliser les liens twitter:player pour intégrer les vidéos Facebook
  2. mettre les vidéos Facebook sur liste noire dans le onebox et les afficher comme des liens normaux

Laquelle préférez-vous @codinghorror ?

3 « J'aime »

Nous pouvons essayer cela, mais sommes-nous sûrs que les liens n’expirent pas ?

Je ne pense pas que le lien expire, car l’URL pointe essentiellement vers un plugin Facebook qui intégrera la vidéo correspondante, quelle que soit l’URL vidéo transmise dans le paramètre href.

https://www.facebook.com/plugins/video.php?height=222&width=400&href=https://www.facebook.com/dccarmen/videos/10222567743521148/

Nous pouvons donc utiliser une iframe pour intégrer la vidéo Facebook.

1 « J'aime »

Non, la correction sera spécifique à Facebook.

Notez que l’échec de la prévisualisation (onebox) d’une vidéo indique généralement que l’erreur provient du site que vous essayez d’intégrer. Dans le cas de Facebook, c’était Facebook qui était trop restrictif et qui ne permettait la lecture de la vidéo que pendant une certaine durée.

Nous contournons généralement ces erreurs uniquement pour les sites très populaires (par exemple : Instagram) afin que la communauté dans son ensemble puisse en bénéficier. Si le site n’est pas populaire et que vous devez l’intégrer sur votre site, la méthode recommandée consiste à créer un plugin personnalisé en ajoutant un moteur Onebox personnalisé pour ce site.

2 « J'aime »

Ok.

Hmm. Existe-t-il un moyen de lister les domaines que onebox tentera d’intégrer ? Sinon, nous nous retrouvons dans cette situation :

  1. Je gère un forum communautaire où les membres aiment partager des liens vers des sites contenant des vidéos. (Il pourrait s’agir de n’importe quels sites, bien sûr… nous ne le savons pas pour le moment.)

  2. Si un site présente une erreur dans son code qui empêche l’intégration de fonctionner, Discourse déforme l’intégration (ce qui est laid), et pire encore, supprime l’URL d’origine, empêchant ainsi les autres de voir ce que l’OP essayait de partager.

Ne semble-t-il pas que l’étape 2 devrait être : « Si un site présente une erreur dans son code qui empêche l’intégration de fonctionner, Discourse arrête d’essayer de l’intégrer et laisse simplement passer le lien ? »

Je ne peux pas résoudre ce problème avec la liste noire, car je ne connais pas les domaines concernés, et bien sûr, n’importe quel site pourrait rencontrer ce problème à l’avenir. Tout comme nous l’avons vu ici avec Facebook.

Vous pouvez tout à fait le corriger — il suffit de mettre en liste noire les domaines sur lesquels vous rencontrez des problèmes. Ce n’est pas impossible.

2 « J'aime »

D’accord, ce n’est pas grave. Je n’ai pas une idée précise de l’ampleur du problème ; le traitement manuel est une excellente solution s’il n’y a que peu de domaines concernés.

Je reste convaincu que Discourse devrait gérer les données externes malformées de manière plus élégante que de « générer un message d’erreur colossal et supprimer le contenu le plus important du message original de l’utilisateur » — et je pense que vous êtes probablement du même avis. :slight_smile: Mais pour l’instant, la mise sur liste noire constitue une solution de contournement acceptable. Merci.

2 « J'aime »