Onebox Twitter embedding

Oh, thanks! Is it possible to do that without actually allowing Twitter logins?

Disable enable twitter logins and just provide twitter consumer key & twitter consumer secret.

3 Likes

Tried it. It didn’t work. Embedded tweets still do not contain images.

Some long tweets with images don’t work

Shorter tweets with images works

It exists since the new twitter policy regarding links and images in the 140 characters count

6 Likes

I’ve just submitted a PR which should fix this:

https://github.com/discourse/discourse/pull/4766

10 Likes

@david - thank you! We do a lot of Twitter oneboxing and found the truncation very annoying.

4 Likes

This is terrific - my forum users really need this.

Is this merged into a future release or something we have to do to modify in our existing installations?

Just upgrade on latest version, it should be good :

  • via yourforum.com/admin/upgrade
  • or SSH into your server and do these commands :

cd /var/discourse
git pull
./launcher rebuild app

I don’t think you need to add the twitter consumer key and twitter consumer secret in your admin settings but I’m only 99% sure

2 Likes

Yep - it’s all merged into master and working great on my forum

I’m afraid you will need to add these keys to your site settings - the data is fetched via the twitter API rather than opengraph/oembed.

2 Likes

It’s always the 1% left

1 Like

I just pushed a small improvement for Twitter onebox. The onebox will now show like and retweet count.

11 Likes

Twitter onebox with videos are really long on mobile. Here’s one I am adding to this post.

How it appears on mobile:

5 Likes

@awesomerobot is there a simple CSS fix for :arrow_double_up:

4 Likes

At the moment on mobile we set a max-height (70vh) and 100% width, and the video scales to fit. This works better for portrait oriented videos than landscape.

We can assume most videos will be landscape, but then we crop portrait oriented videos pretty severely as a trade-off.

There’s no simple fix for both without knowing the aspect ratio (Are we able to calculate the aspect ratio of these and maybe append a style based on that? the iframe seems to come with height/width).

4 Likes

Yes, we can do that. This is the line where we build the iframe

https://github.com/discourse/discourse/blob/30990006a92bd64eb6c49dc3139a17ce8fd1dc89/lib/twitter_api.rb#L29

What HTML structure would be most useful for you @awesomerobot? Something like

<div class='tweet-images'>
  <div class='aspect-image-full-size' style='--aspect-ratio:#{width}/#{height};'/>
    <iframe class='tweet-video' src='https://twitter.com/i/videos/blah' width='123' height='456' frameborder='0' allowfullscreen></iframe>
  </div>
</div>

And then we can re-use the aspect-image-full-size logic which we use for images?

1 Like

Yeah I think that could work, with the aspect ratio there I should be able to adjust as needed.

2 Likes

I’m trying to figure out how to make tweets pulled from zapier into a topic to appear like this and I’m having trouble. Anybody able to point me in the right direction? Should it work if I just enable “onebox” in settings?

3 Likes

Is there any way to get embedded tweets to show the tweet being replied to? For example, if I embed this tweet https://twitter.com/AOC/status/1230329539924025345, in phpBB and vBulletin it displays both the tweet and what she’s responding to.
pbpBB:
image

vB:
image

But in Discourse only the reply is shown, which often doesn’t make sense without the context of the original tweet

Of course it’s easy enough to just post the original tweet as well as the reply, but most users (and a couple of twitter bots we use) aren’t clever/conscientious enough to figure out they need to do this.

7 Likes

This is a very very tricky problem, the “official” twitter embed code has 2 problems

  1. It does not provide us with height, so it would make topics jump around as it loads.
  2. We would have to run twitter Javascript files on all our sites

We worked around this by using our own custom renderer, but unfortunately that means that we keep needing to play catch up with the official embed code.

6 Likes